PageHelper 分页类

来源:互联网 发布:青果软件教务系统 编辑:程序博客网 时间:2024/05/24 07:12

分页类: PageHelper.java

package util.helper;public class PageHelper {    /** Configuration PageHelper **/    protected int pageSize;    protected int linkCount;    public PageHelper(int pageSize, int linkCount){        this.pageSize = pageSize;        this.linkCount = linkCount;    }    public int getPageSize() {        return pageSize;    }    public int getLinkCount() {        return linkCount;    }    /** Configuration PageHelper End **/    /** Set PageHelper **/    protected int rowCount = 0;    protected int currentPage = 1;    public int getRowCount() {        return rowCount;    }    public void setRowCount(int rowCount) {        if(0 <= rowCount){            this.rowCount = rowCount;            this.updatePageCount();        }    }    public int getCurrentPage() {        return currentPage;    }    public void setCurrentPage(int currentPage) {        if(1 <= currentPage && currentPage <= pageCount){            this.currentPage = currentPage;            this.updateBeginIndex();            this.updateHasPrevPage();            this.updateHasNextPage();            this.updateStartPage();        }    }    /** Set PageHelper End **/    /** Operator PageHelper **/    protected int pageCount = 1;    protected int beginIndex = 0;    protected boolean hasPrevPage = false;    protected int prevPage = 1;    protected boolean hasNextPage = false;    protected int nextPage = 1;    protected int startPage = 1;    protected int endPage = 1;    public int getPageCount() {        return pageCount;    }    public int getBeginIndex() {        return beginIndex;    }    public boolean isHasPrevPage() {        return hasPrevPage;    }    public int getPrevPage() {        return prevPage;    }    public boolean isHasNextPage() {        return hasNextPage;    }    public int getNextPage() {        return nextPage;    }    public int getStartPage() {        return startPage;    }    public int getEndPage() {        return endPage;    }    /** Operator PageHelper End **/    /** Update PageHelper **/    protected void updatePageCount(){        // from 1 to pageCount        pageCount = (rowCount - 1) / pageSize + 1;        this.updateHasNextPage();        this.updateStartPage();    }    protected void updateBeginIndex(){        // from (currentPage - 1) * pageSize to currentPage * pageSize - 1        beginIndex = (currentPage - 1) * pageSize;    }    protected void updateHasPrevPage(){        hasPrevPage = 1 < currentPage;        this.updatePrevPage();    }    protected void updatePrevPage(){        if(hasPrevPage){            prevPage = currentPage - 1;        }else{            prevPage = currentPage;        }    }    protected void updateHasNextPage(){        hasNextPage = pageCount > currentPage;        this.updateNextPage();    }    protected void updateNextPage(){        if(hasNextPage){            nextPage = currentPage + 1;        }else{            nextPage = currentPage;        }    }    protected void updateStartPage(){        int mid = (linkCount + 1) / 2;        if(currentPage <= mid){            startPage = 1;        }else if(pageCount - currentPage < mid){            startPage = pageCount - linkCount + 1;            if(startPage <= 0){                startPage = 1;            }        }else{            startPage = currentPage - mid + 1;        }        this.updateEndPage();    }    protected void updateEndPage(){        int end = startPage + linkCount - 1;        if(end < pageCount){            endPage = end;        }else{            endPage = pageCount;        }    }    /** Update PageHelper End **/}

分页测试类: PageHelperUtil.java

package com.helper.unit;import org.junit.Test;import util.helper.PageHelper;public class PageHelperUtil {    private void output(PageHelper pageHelper){        System.out.print("上一页:" + pageHelper.getPrevPage() +                "  下一页:" + pageHelper.getNextPage() +                "  起始下标:" + pageHelper.getBeginIndex());        if(pageHelper.isHasPrevPage()){            System.out.print("    有上一页: ");        }else{            System.out.print("    无上一页: ");        }        for(int i=pageHelper.getStartPage(); i<=pageHelper.getEndPage(); i++){            if(pageHelper.getCurrentPage() == i){                System.out.print(" *" + i + "*");            }else{                System.out.print(" " + i);            }        }        if(pageHelper.isHasNextPage()){            System.out.print("  :有下一页 ");        }else{            System.out.print("  :无下一页");        }        System.out.println("\n");    }    @Test    public void test() {        // 实例化一个每页显示10条记录,有5个链接按钮的分页工具        PageHelper pageHelper = new PageHelper(10, 5);        // 设置总记录数        pageHelper.setRowCount(90);        // 设置当前页        pageHelper.setCurrentPage(1);        output(pageHelper);        // 设置当前页        pageHelper.setCurrentPage(2);        output(pageHelper);        // 设置当前页        pageHelper.setCurrentPage(3);        output(pageHelper);        // 设置当前页        pageHelper.setCurrentPage(5);        output(pageHelper);        // 设置当前页        pageHelper.setCurrentPage(7);        output(pageHelper);        // 设置当前页        pageHelper.setCurrentPage(8);        output(pageHelper);        // 设置当前页        pageHelper.setCurrentPage(9);        output(pageHelper);    }}

测试结果:

上一页:1  下一页:2  起始下标:0    无上一页:  *1* 2 3 4 5  :有下一页 上一页:1  下一页:3  起始下标:10    有上一页:  1 *2* 3 4 5  :有下一页 上一页:2  下一页:4  起始下标:20    有上一页:  1 2 *3* 4 5  :有下一页 上一页:4  下一页:6  起始下标:40    有上一页:  3 4 *5* 6 7  :有下一页 上一页:6  下一页:8  起始下标:60    有上一页:  5 6 *7* 8 9  :有下一页 上一页:7  下一页:9  起始下标:70    有上一页:  5 6 7 *8* 9  :有下一页 上一页:8  下一页:9  起始下标:80    有上一页:  5 6 7 8 *9*  :无下一页
原创粉丝点击