此分页程序 根据 robbin 所写 《应用Hibernate3的DetachedCriteria实现分页查询》 而来,相关代码参照 Spring2 Hibernate3 Junit 应用示例



本机访问地址:[url]http://localhost:8080/ad/queryToDayInfo.do[/url]

效果图示如下:



一、分页支持类
package com.jh.xh.common;
import java.util.List;
public class PaginationSupport {
    PaginationSupport() {
    }
    public final static int PAGESIZE = 30;
    private int pageSize = PAGESIZE ;
    private List items ;
    private int totalCount ;
    private int [] indexes = new int [0];
    private int startIndex = 0;
    public PaginationSupport(List items, int totalCount) {
        setPageSize( PAGESIZE );
        setTotalCount(totalCount);
        setItems(items);
        setStartIndex(0);
    }
    public PaginationSupport(List items, int totalCount, int startIndex) {
        setPageSize( PAGESIZE );
        setTotalCount(totalCount);
        setItems(items);
        setStartIndex(startIndex);
    }
    public PaginationSupport(List items, int totalCount, int pageSize,
           int startIndex) {
        setPageSize(pageSize);
        setTotalCount(totalCount);
        setItems(items);
        setStartIndex(startIndex);
    }
    public List getItems() {
        return items ;
    }
    public void setItems(List items) {
        this . items = items;
    }
    public int getPageSize() {
        return pageSize ;
    }
    public void setPageSize( int pageSize) {
        this . pageSize = pageSize;
    }
    public int getTotalCount() {
        return totalCount ;
    }
    public void setTotalCount( int totalCount) {
       if (totalCount > 0) {
           this . totalCount = totalCount;
           int count = totalCount / pageSize ;
           if (totalCount % pageSize > 0)
               count++;
           indexes = new int [count];
           for ( int i = 0; i < count; i++) {
               indexes [i] = pageSize * i;
           }
       } else {
           this . totalCount = 0;
       }
    }
    public int [] getIndexes() {
        return indexes ;
    }
    public void setIndexes( int [] indexes) {
        this . indexes = indexes;
    }
    public int getStartIndex() {
        return startIndex ;
    }
    public void setStartIndex( int startIndex) {
       if ( totalCount < +0)
           this . startIndex = 0;
       else if (startIndex >= totalCount )
           this . startIndex = indexes [ indexes . length - 1];
       else if (startIndex < 0)
           this . startIndex = 0;
       else {
           this . startIndex = indexes [startIndex / pageSize ];
       }
    }
    public int getNextIndex() {
       int nextIndex = getStartIndex() + pageSize ;
       if (nextIndex >= totalCount )
           return getStartIndex();
       else
           return nextIndex;
    }
    public int getPreviousIndex() {
       int previousIndex = getStartIndex() - pageSize ;
       if (previousIndex < 0)
           return 0;
       else
           return previousIndex;
    }
    /**
      * 总页数; 总记录数 % 每页记录数
      *
      * @return
      */
    public int getTotalPages() {
       int totalPages;
       if (getTotalCount() % getPageSize() > 0) {
           totalPages = getTotalCount() / getPageSize() + 1;
       } else {
           totalPages = getTotalCount() / getPageSize();
       }
        return totalPages;
    }
    /**
      * 当前页数; 起始位置 / 每页记录数 + 1
      *
      * @return
      */
    public int getCurrentPage() {
       int currentPage = getStartIndex() / getPageSize() + 1;
        return currentPage;
    }
    /**
      * ; ( 总页数 - 1)* 每页记录数
      *
      * @return
      */
    public int getLastPage() {
       int lastPage = (getTotalPages() - 1) * getPageSize();
        return lastPage;
    }
}