Java实现分页代码

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

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();
 } 

 } 

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 举例详解用Java实现web分页功能的方法

    分页问题是一个非常普遍的问题,开发者几乎都会遇到,这里不讨论具体如何分页,说明一下Web方式下分页的原理.首先是查询获得一个结果集(表现为查询数据库获得的结果),如果结果比较多我们一般都不会一下显示所有的数据,那么就会用分页的方式来显示某些数据(比如20条).因为Http的无状态性,每一次提交都是当作一个新的请求来处理,即使是换页,上一次的结果对下一次是没有影响的. 这里总结三种实现分页的方式,不知道还有没有别的! 1.每次取查询结果的所有数据,然后根据页码显示指定的纪录. 2.根据页面只取一页

  • JavaWeb中的简单分页完整代码(推荐)

    这次主要是讲解一下通过登录后对得到的数据进行分页,首先我们新建一个登录页面login.jsp,因为我们主要学习一下分页,所以登录验证的部分不再阐述,主要代码如下: <form action="pageServlet"> 用户名:<input type="text" name="username"><br> 密 码:<input type="text" name="passwo

  • 使用Jquery+Ajax+Json如何实现分页显示附JAVA+JQuery实现异步分页

    先给大家展示下运行效果图:  1.后台action产生json数据. List blackList = blackService.getBlackInfoList(mobileNum, gatewayid, startDate, endDate); int totalRows = blackList.size(); StringBuffer sb = new StringBuffer(); sb.append("{\"totalCount\":\""+to

  • java中利用List的subList方法实现对List分页(简单易学)

    以下是介绍利用List的subList方法实现对List分页,废话不多说了,直接看代码把 /** *//** * List分页 * 实现:利用List的获取子List方法,实现对List的分页 * @author 显武 * @date 2010-1-8 16:27:31 * */ import java.util.ArrayList; import java.util.List; public class PageModel { private int page = 1; // 当前页 publ

  • js前台分页显示后端JAVA数据响应

    好久没有写过代码了,手有些痒了,正好底下小弟们某些功能的实现着实影响工程进度,便自己动手给写了一段. 功能:js前台分页显示 + 后台数据响应(JAVA Servlet即可) 框架:jquery1.8.7 此文目的:给那些刚入行软件开发,喜欢这也看看,那也看看,这儿copy一下,那儿copy一下初级小菜鸟们做一个表帅; 1 为程序者需认真踏实坐下来; 2 程序需要有投入才有收获; 3 有收获才有鼓舞,才有动力一步一步往下走! 下面上代码,具体会有小注释 1.web页面的逻辑处理(js代码写到页面

  • Java(基于Struts2) 分页实现代码

    分页实现的基本过程是这样的: 1. 设置自己的分页器的基本参数(可以从配置文件中读取) ■每页显示的记录条数 ■每次最多显示多少页 2. 编写设置分页器其他参数的函数 主要参数有以下几个: 总记录条数 总页数 当前页号:现在显示的页数 每页显示的记录条数 当前页开始行(第一行是0行) 第一页页号 最后页页号 下一页页号 上一页页号 画面上显示的起始页号 画面上显示的结束页号 参数基本实现原理:设置以上各个参数,实际上只需要三个参数就可以对所有的其他变量进行设置,即总记录条数,每页显示记录数,每次

  • Java操作MongoDB模糊查询和分页查询

    本文实例为大家分享了Java操作MongoDB模糊查询和分页查询,供大家参考,具体内容如下 模糊查询条件: 1.完全匹配 Pattern pattern = Pattern.compile("^name$", Pattern.CASE_INSENSITIVE); 2.右匹配 Pattern pattern = Pattern.compile("^.*name$", Pattern.CASE_INSENSITIVE); 3.左匹配 Pattern pattern =

  • Java简单实现SpringMVC+MyBatis分页插件

    1.封装分页Page类 package com.framework.common.page.impl; import java.io.Serializable; import com.framework.common.page.IPage; /** * * * */ public abstract class BasePage implements IPage, Serializable { /** * */ private static final long serialVersionUID

  • Java的MyBatis框架中实现多表连接查询和查询结果分页

    实现多表联合查询 还是在david.mybatis.model包下面新建一个Website类,用来持久化数据之用,重写下相应toString()方法,方便测试程序之用. package david.mybatis.model; import java.text.SimpleDateFormat; import java.util.Date; public class Website { private int id; private String name; private int visito

  • Java Web 简单的分页显示实例代码

    本文通过两个方法:(1)计算总的页数. (2)查询指定页数据,实现简单的分页效果. 思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指定页的数据,在表示层通过 EL 表达式和 JSTL 将该页数据显示出来. 先给大家展示下效果图: 题外话:该分页显示是用 "表示层-控制层-DAO层-数据库"的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步.废话不多说了,开始进入主题,详细步骤如下所示: 1.DAO层-数据库 JDBCUtils 类用于打开和关闭数据

随机推荐