如果使用Hibernate的话,她里面的Query有这么两个方法,可以查询出第x到第y条的信息,由此我们可以只要知道,只要有当前页的页码(page)和总记录条数(number),就可以实现分页查询。Query两个方法如下:
Query query = session.createQuery("from Products");query.setFirstResult();// (当前页面-1)X每页条数query.setMaxResults(); // 每页的条数
当然,我这个是用Hibernate+struts2做的,首先需要构建自己的分页类FenYe.class
分页类:
public class FenYe { private int first = 0; // 第一条记录 private int max = 5; // 每页显示的记录条数 private Integer page; // 输入页数 private int curr_page; // 当前页数 private int pages; // 总的页数 private Integer number; // 总的记录数 // 第一页 public void firstListener() { page=1; //输入页=第一页 first=0; //第一条记录=0 curr_page = page; //当前页=输入页 } // 最后一页 public void lastListener() { page = pages; //输入页=总页数 curr_page=page; //当前页=输入页 first = (pages - 1) * max; //第一条记录=(当前页-1)*每页显示记录的条数 } //中间页 public void gotoListener() { curr_page = page; //当前页=输入页 first = (curr_page - 1) * max; //第一条记录=(当前页-1)*每页显示记录的条数 } // 判断是否是第一页或者最后一页 public FenyeService fenYe(Integer page, Integer number) { // 设定输入的页数 this.setPage(page); // 设定总记录数 this.setNumber(number); // 初始化总页数 this.setPages(number); if (page > 0 && page <= this.pages) { // 如果输入页数>0<总的页数 this.gotoListener(); } else if (page <= 0 || number == 0) { // 如果输入页数<0或者没有数据的时候 this.firstListener(); } else if (page > this.pages) { // 如果输入页数>总页数 this.lastListener(); } // 返回自身 return this; } public static void main(String[] args) { FenYe fenye = new FenYe(); fenye.setNumber(11); fenye.setPage(3); fenye.fenYe(); System.out.println("第一条记录first:" + fenye.getFirst()); System.out.println("每页显示的记录数max:" + fenye.getMax()); System.out.println("输入页数page:" + fenye.getPage()); System.out.println("当前页数curr_page:" + fenye.getCurr_page()); System.out.println("总页数pages:" + fenye.getPages()); System.out.println("总记录条数number:" + fenye.getNumber()); } ... 中间的get、set方法就不贴出来了 ... /* * * 对pages的set方法作出如下修改 * * 计算总页数 * * 如果被整除:总页数=总数据条数/每页显示的条数 * * 如果有余数:总页数=总数据条数/每页显示的条数(取整数)+1 */ public void setPages(int number) { this.pages = number % max == 0 ? number / max : number / max + 1; }}