Java实现分页代码

作者:小小的程序虫 时间:2023-08-05 08:14:47 

在项目中,分页是一个项目中必不可少的,它可以防止我们从数据库中进行大量数据查询时速度变慢,提高我们的查询效率。

1、定义分页模型:PageModel


package com.common.page;

import java.util.List;

/**
* 封装分页信息
* @author Administrator
*
*/
public class PageModel<E> {

//结果集
private List<E> list;

//查询记录数
private int totalRecords;

//每页多少条数据
private int pageSize;

//第几页
private int pageNo;

/**
 * 总页数
 * @return
 */
public int getTotalPages() {
 return (totalRecords + pageSize - 1) / pageSize;
}

/**
 * 取得首页
 * @return
 */
public int getTopPageNo() {
 return 1;
}

/**
 * 上一页
 * @return
 */
public int getPreviousPageNo() {
 if (pageNo <= 1) {
 return 1;
 }
 return pageNo - 1;
}

/**
 * 下一页
 * @return
 */
public int getNextPageNo() {
 if (pageNo >= getBottomPageNo()) {
 return getBottomPageNo();
 }
 return pageNo + 1;
}

/**
 * 取得尾页
 * @return
 */
public int getBottomPageNo() {
 return getTotalPages();
}

public List<E> getList() {
 return list;
}

public void setList(List<E> list) {
 this.list = list;
}

public int getTotalRecords() {
 return totalRecords;
}

public void setTotalRecords(int totalRecords) {
 this.totalRecords = totalRecords;
}

public int getPageSize() {
 return pageSize;
}

public void setPageSize(int pageSize) {
 this.pageSize = pageSize;
}

public int getPageNo() {
 return pageNo;
}

public void setPageNo(int pageNo) {
 this.pageNo = pageNo;
}
}

2、分页测试:在MySQL中建立admin表,里面有字段id、name、password

3、简历Admin的实体bean类:


package com.common.page;

public class Admin {
private int id;
private String name;
private String password;
public int getId() {
 return id;
}
public void setId(int id) {
 this.id = id;
}
public String getName() {
 return name;
}
public void setName(String name) {
 this.name = name;
}
public String getPassword() {
 return password;
}
public void setPassword(String password) {
 this.password = password;
}

}

4、测试调用:


package com.common.page;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.common.db.DbUtil;

public class Client {
public static PageModel findAdmins(int pageNo,int pageSize){
 Connection conn=DbUtil.getConnection();
 String sql="select * from admin limit ?,?";
 PageModel pageModel=null;
 PreparedStatement pstm=null;
 ResultSet rs=null;
 Admin admin=null;
 List<Admin> list=new ArrayList<Admin>();
 try {
 pstm=conn.prepareStatement(sql);
 pstm.setInt(1, (pageNo-1)*pageSize);
 pstm.setInt(2, pageNo*pageSize);
 rs=pstm.executeQuery();;
 while(rs.next()){
  admin=new Admin();
  admin.setId(rs.getInt("a_id"));
  admin.setName(rs.getString("a_name"));
  admin.setPassword(rs.getString("a_pwd"));
  list.add(admin);
 }
 ResultSet rs2=pstm.executeQuery("select count(*) from admin");
 int total=0;
 if(rs2.next()){
  total=rs2.getInt(1);
 }
 pageModel=new PageModel();
 pageModel.setPageNo(pageNo);
 pageModel.setPageSize(pageSize);
 pageModel.setTotalRecords(total);
 pageModel.setList(list);
 } catch (SQLException e) {
 e.printStackTrace();
 }finally{
 DbUtil.close(conn);
 DbUtil.close(pstm);
 DbUtil.close(rs);
 }
 return pageModel;
}

public static void main(String[] args) {
 PageModel pageModel=Client.findAdmins(2,4);
 List<Admin> list=pageModel.getList();
 for(Admin a:list){
 System.out.print("ID:"+a.getId()+",用户名:"+a.getName()+",密码:"+a.getPassword());
 System.out.println();
 }
 System.out.print("当前页:"+pageModel.getPageNo()+" ");
 System.out.print("共"+pageModel.getTotalPages()+"页 ");
 System.out.print("首页:"+pageModel.getTopPageNo()+" ");
 System.out.print("上一页:"+pageModel.getPreviousPageNo()+" ");
 System.out.print("下一页:"+pageModel.getNextPageNo()+" ");
 System.out.print("尾页:"+pageModel.getBottomPageNo()+" ");
 System.out.print("共"+pageModel.getTotalRecords()+"条记录");
 System.out.println();
}

}

这样分页效果就实现了,我们要实现分页效果,只要传入相应的参数和相应的数据库执行语句即可实现,希望大家能灵活运用。

来源:https://blog.csdn.net/guaodebeijixing/article/details/52290251

标签:java,分页
0
投稿

猜你喜欢

  • C#时间格式转换为时间戳的方法步骤

    2022-04-13 12:27:19
  • Android实现ListView控件的多选和全选功能实例

    2023-01-04 02:26:50
  • Spring Cloud如何使用Feign构造多参数的请求

    2023-11-03 00:18:31
  • C#动态生成DropDownList执行失败原因分析

    2023-08-30 22:37:28
  • 详解C#的排列组合

    2021-06-05 15:40:11
  • 详解Java包装类及自动装箱拆箱

    2023-11-14 21:13:23
  • C#实现绘制鼠标的示例代码

    2023-06-11 04:40:54
  • c#和avascript加解密之间的互转代码分享

    2022-03-22 10:15:28
  • elasticsearch数据信息索引操作action support示例分析

    2022-03-18 02:09:07
  • Java8新特性之泛型的目标类型推断_动力节点Java学院整理

    2023-11-26 10:38:21
  • Java虚拟机运行时栈的栈帧

    2022-04-29 03:48:00
  • Android学习之Broadcast的简单使用

    2023-11-19 15:18:02
  • Spring Boot 实例代码之通过接口安全退出

    2022-02-14 04:41:36
  • Java实现微信公众号发送模版消息

    2021-07-16 17:03:35
  • C#实现FFT(递归法)的示例代码

    2022-12-30 05:21:06
  • C# Winform使用扩展方法实现自定义富文本框(RichTextBox)字体颜色

    2021-06-23 15:05:50
  • StringBuilder为什么线程不安全深入讲解

    2023-01-24 01:52:55
  • Jsoup解析html实现招聘信息查询功能

    2022-01-08 19:38:07
  • java15新功能的详细讲解

    2023-08-23 04:40:21
  • Spring中BeanFactory FactoryBean和ObjectFactory的三种的区别

    2022-02-21 22:43:58
  • asp之家 软件编程 m.aspxhome.com