Hibernate 可以实现分页查询,例如:  

从第2万条开始取出100条记录java 代码   

Query q = session.createQuery("from Cat as c");      

q.setFirstResult(20000);      

q.setMaxResults(100);      

List l = q.list();  

 

Pager.java

 

 

package util;

public class Pager {
 private int totalRows = 0; // 记录总数
 private int totalPages = 0; // 总页数
 private int pageSize = 10; // 每页显示数据条数,默认为10条记录
 private int currentPage = 1; // 当前页数
 private boolean hasPrevious = false; // 是否有上一页
 private boolean hasNext = false; // 是否有下一页
 
 /**
     * Initialize Pager
     * @param totalRows total record rows
     * @param pageSize total record is hold by every page
     */
    public void init(int totalRows, int pageSize) {
        this.totalRows = totalRows;
        this.pageSize = pageSize;
        totalPages = ((totalRows + pageSize) - 1) / pageSize;
        refresh(); // 刷新当前页面信息
    }

 

 
    // 跳到第一页
 public void first() {
  currentPage = 1;
  this.setHasPrevious(false);
  refresh();
 }

 // 取得上一页(重新设定当前页面即可)
 public void previous() {
  if(currentPage>1)
   currentPage--;
  refresh();
 }

 // 取得下一页
 public void next() {
  System.out.println("next: totalPages: " + totalPages +
  " currentPage : " + currentPage);
  if (currentPage < totalPages) {
   currentPage++;
  }
  refresh();
 }

 // 跳到最后一页
 public void last() {
  currentPage = totalPages;
  this.setHasNext(false);
  refresh();
 }

 // 刷新当前页面信息
 public void refresh() {
  if (totalPages <= 1) {
   hasPrevious = false;
   hasNext = false;
  } else if (currentPage == 1) {
   hasPrevious = false;
   hasNext = true;
  } else if (currentPage == totalPages) {
   hasPrevious = true;
   hasNext = false;
  } else {
   hasPrevious = true;
   hasNext = true;
  }
 }

 // /
 // /setters and getters
 // /
 
 public int getCurrentPage() {
  return currentPage;
 }
 public void setCurrentPage(int currentPage) {
  if(currentPage <= totalPages)
   this.currentPage = currentPage;
  this.refresh();
 }
 public boolean isHasNext() {
  return hasNext;
 }
 public void setHasNext(boolean hasNext) {
  this.hasNext = hasNext;
 }
 public boolean isHasPrevious() {
  return hasPrevious;
 }
 public void setHasPrevious(boolean hasPrevious) {
  this.hasPrevious = hasPrevious;
 }
 public int getPageSize() {
  return pageSize;
 }
 public void setPageSize(int pageSize) {
  this.pageSize = pageSize;
  this.refresh();
 }
 public int getTotalPages() {
  return totalPages;
 }
 public void setTotalPages(int totalPages) {
  this.totalPages = totalPages;
  this.refresh();
 }
 public int getTotalRows() {
  return totalRows;
 }
 public void setTotalRows(int totalRows) {
  this.totalRows = totalRows;
  this.refresh();
 }

 
}