用于实现基本的分页操作工具类

来源:互联网 发布:数字病理 人工智能 编辑:程序博客网 时间:2024/06/15 01:25
packagecom.fww.practice.page;
 
importjava.util.List;
 
/**
 * 类功能说明 :作为分页使用
 * @Description:
 * @author FWW
 * @date 2014年7月2日 下午5:45:49
 */
publicclass Page {
 
    /**
     * 总的记录数
     */
    privateint rowCounts;
     
    /**
     * 每一页可以显示的记录数
     */
    privateint pageSize;
     
    /**
     * 当前的页面
     */
    privateint currentPage;
     
    /**
     * 开始的记录数
     */
    privateint startRow;
     
    /**
     * 记录数折换成导航显示的个数
     */
    privateint navCounts;
     
    /**
     * 第一页
     */
    privateint firstPage;
     
    /**
     * 最后一页
     */
    privateint lastPage;
     
    /**
     * 页面显示的导航起始位置
     */
    privateint beginNav;
     
    /**
     * 页面显示的导航结束的位置
     */
    privateint endNav;
     
    /**
     * 上一页
     */
    privateint prePage;
     
    /**
     * 下一页
     */
    privateint nextPage;
     
    /**
     * 固定的导航数
     */
    privateint navNum;
     
    /**
     * 获取的记录集合
     */
    @SuppressWarnings("rawtypes")
    privateList pageDatas;
 
    publicint getRowCounts() {
        returnrowCounts;
    }
 
    publicvoid setRowCounts(introwCounts) {
        this.rowCounts = rowCounts;
    }
 
    publicint getPageSize() {
        returnpageSize;
    }
 
    publicvoid setPageSize(intpageSize) {
        this.pageSize = pageSize;
    }
 
    publicint getCurrentPage() {
        returncurrentPage;
    }
 
    publicvoid setCurrentPage(intcurrentPage) {
        this.currentPage = currentPage;
    }
 
    publicint getStartRow() {
        returnstartRow;
    }
 
    publicvoid setStartRow(intstartRow) {
        this.startRow = startRow;
    }
 
    publicint getNavCounts() {
        returnnavCounts;
    }
 
    publicvoid setNavCounts(intnavCounts) {
        this.navCounts = navCounts;
    }
 
    publicint getFirstPage() {
        returnfirstPage;
    }
 
    publicvoid setFirstPage(intfirstPage) {
        this.firstPage = firstPage;
    }
 
    publicint getLastPage() {
        returnlastPage;
    }
 
    publicvoid setLastPage(intlastPage) {
        this.lastPage = lastPage;
    }
 
    publicint getBeginNav() {
        returnbeginNav;
    }
 
    publicvoid setBeginNav(intbeginNav) {
        this.beginNav = beginNav;
    }
 
    publicint getEndNav() {
        returnendNav;
    }
 
    publicvoid setEndNav(intendNav) {
        this.endNav = endNav;
    }
 
    publicint getPrePage() {
        returnprePage;
    }
 
    publicvoid setPrePage(intprePage) {
        this.prePage = prePage;
    }
 
    publicint getNextPage() {
        returnnextPage;
    }
 
    publicvoid setNextPage(intnextPage) {
        this.nextPage = nextPage;
    }
 
    publicint getNavNum() {
        returnnavNum;
    }
 
    publicvoid setNavNum(intnavNum) {
        this.navNum = navNum;
    }
 
    @SuppressWarnings("rawtypes")
    publicList getPageDatas() {
        returnpageDatas;
    }
 
    @SuppressWarnings("rawtypes")
    publicvoid setPageDatas(List pageDatas) {
        this.pageDatas = pageDatas;
    }
 
    /**
     * @param rowCounts 总得记录实体个数
     * @param pageSize 页面可以显示的实体个数
     * @param currentPage 当前页码
     * @param navNum 固定显示的最多导航数
     */
    publicPage(introwCounts, intpageSize, intcurrentPage, intnavNum) {
        //记录实体总数
        this.rowCounts = rowCounts;
        //一页可以显示的记录实体的个数
        this.pageSize = pageSize;
        //第一页
        this.firstPage = 1;
        //固定的导航数
        this.navNum = navNum;
 
        //运用总的实体数折算出来的可以显示的导航数
        this.navCounts = (int)(rowCounts+pageSize-1)/pageSize;
        //当前的页面: 首页和当前页中的最大的
        this.currentPage = Math.max(currentPage, firstPage);
        //当前的页面: 折算出来的可以显示的最大页数和当前页中的最小的一个
        this.currentPage = Math.min(currentPage, this.navCounts);
         
        //起始显示的实体在数据库中的位置
        this.startRow = Math.max(0, (this.currentPage-1)*pageSize);
        //尾页
        this.lastPage = this.navCounts;
         
        //上一页
        this.prePage  = Math.max(this.currentPage-1, firstPage);
        //下一页
        this.nextPage = Math.min(this.currentPage+1, lastPage);
        //起始的导航数
        this.beginNav = Math.max(this.firstPage,this.currentPage-this.navNum/2);
        //最后的一个导航数
        this.endNav = Math.min(this.lastPage,this.beginNav+this.navNum-1);
         
        if(lastPage - beginNav<(navNum-1)){
            this.beginNav = Math.max(this.firstPage,this.endNav-this.navNum+1);
        }
    }
 
    publicPage() {
         
    }
     
     
     
     
}
0 0
原创粉丝点击