「Java 开发工具」PageBean 分页实体类

170 阅读4分钟

分页信息的封装:当前页、当前页条目数、排序规则、排序字段、总页数、总条目数、返回数据详细记录(List<T>)

美女2.png

一、源码

(1)版本1:分页实体工具
import java.util.List;

/**
 * @author Admin
 */
public class PageBean {
    // ====== 【传递的参数】或需要配置的参数   ======
    /**
     * 当前页码
     */
    private int currentPage;
    /**
     * 当前页码记录数
     */
    private int pageCount;
    /**
     * 排序字段
     */
    private String orderCol;
    /**
     * 降序or升序(降序“desc",升序”asc“)
     */
    private String descOrAsc;


    //====== 需要【查询数据库】  ======
    /**
     * 记录条目数详细
     */
    private List recordList;
    /**
     * 总条目数
     */
    private int totalCount;

    // ====== 【需要计算】的属性 ======
    /**
     * 总页码
     */
    private int totalPage;
    /**
     * 当前页码起始索引
     */
    private int beginPageIndex;
    /**
     * 当前页码结束索引
     */
    private int endPageIndex;


    public PageBean() {
        super();
    }

    /**
     * 接收 6个参数
     *
     * @param currentPage 当前页码
     * @param pageCount   当前页码数量
     * @param orderCol    排序字段
     * @param descOrAsc   升序or降序(降序值为"desc", 升序值为"asc")
     * @param recordList  页码数据详细
     * @param totalCount  总条目数量
     */
    public PageBean(int currentPage, int pageCount, String orderCol, String descOrAsc, List recordList,
                    int totalCount) {
        this.currentPage = currentPage;
        this.pageCount = pageCount;
        this.orderCol = orderCol;
        this.descOrAsc = descOrAsc;
        this.recordList = recordList;
        this.totalCount = totalCount;

        // 1.计算 pageCount
        pageCount = (totalCount + pageCount - 1) / pageCount;
        // 2.计算 beginPageIndex 与 endPageIndex(总页码小于等于10页时,全部显示)
        if (pageCount <= 10) {
            beginPageIndex = 1;
            endPageIndex = pageCount;
        } else {  // >> 总页码大于10页时,就只显示当前页附近的共10个页码
            // 默认显示 前4页 + 当前页 + 后5页
            beginPageIndex = currentPage - 4; // 7 - 4 = 3;
            endPageIndex = currentPage + 5; // 7 + 5 = 12; --> 3 ~ 12
            // 如果前面不足4个页码时,则显示前10页
            if (beginPageIndex < 1) {
                beginPageIndex = 1;
                endPageIndex = 10;
            } else if (endPageIndex > pageCount) {// 如果后面不足5个页码时,则显示后10页
                endPageIndex = pageCount;
                beginPageIndex = pageCount - 9;
            }
        }
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public String getOrderCol() {
        return orderCol;
    }

    public void setOrderCol(String orderCol) {
        this.orderCol = orderCol;
    }

    public String getDescOrAsc() {
        return descOrAsc;
    }

    public void setDescOrAsc(String descOrAsc) {
        this.descOrAsc = descOrAsc;
    }

    public List getRecordList() {
        return recordList;
    }

    public void setRecordList(List recordList) {
        this.recordList = recordList;
    }

    public int getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }

    public int getTotalPage() {
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }

    public int getBeginPageIndex() {
        return beginPageIndex;
    }

    public void setBeginPageIndex(int beginPageIndex) {
        this.beginPageIndex = beginPageIndex;
    }

    public int getEndPageIndex() {
        return endPageIndex;
    }

    public void setEndPageIndex(int endPageIndex) {
        this.endPageIndex = endPageIndex;
    }
}

(2)版本2:分页实体类
import java.util.List;
 
public class PageBean<T> {
    //已知数据
    private int pageNum;    //当前页,从请求那边传过来。
    private int pageSize;    //每页显示的数据条数。
    private int totalRecord;    //总的记录条数。查询数据库得到的数据
     
    //需要计算得来
    private int totalPage;    //总页数,通过totalRecord和pageSize计算可以得来
    //开始索引,也就是我们在数据库中要从第几行数据开始拿,有了startIndex和pageSize,
    //就知道了limit语句的两个数据,就能获得每页需要显示的数据了
    private int startIndex;       
         
     
    //将每页要显示的数据放在list集合中
    private List<T> list;
     
    //分页显示的页数,比如在页面上显示1,2,3,4,5页,start就为1,end就为5,这个也是算过来的
    private int start;
    private int end;
     
    //通过pageNum,pageSize,totalRecord计算得来tatalPage和startIndex
    //构造方法中将pageNum,pageSize,totalRecord获得
    public PageBean(int pageNum,int pageSize,int totalRecord) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.totalRecord = totalRecord;
         
        //totalPage 总页数
        if(totalRecord%pageSize==0){
            //说明整除,正好每页显示pageSize条数据,没有多余一页要显示少于pageSize条数据的
            this.totalPage = totalRecord / pageSize;
        }else{
            //不整除,就要在加一页,来显示多余的数据。
            this.totalPage = totalRecord / pageSize +1;
        }
        //开始索引
        this.startIndex = (pageNum-1)*pageSize ;
        //显示5页,这里自己可以设置,想显示几页就自己通过下面算法修改
        this.start = 1;
        this.end = 5;
        //显示页数的算法
 
        if(totalPage <=5){
            //总页数都小于5,那么end就为总页数的值了。
            this.end = this.totalPage;
        }else{
            //总页数大于5,那么就要根据当前是第几页,来判断start和end为多少了,
            this.start = pageNum - 2;
            this.end = pageNum + 2;
             
            if(start < 0){
                //比如当前页是第1页,或者第2页,那么就不如和这个规则,
                this.start = 1;
                this.end = 5;
            }
            if(end > this.totalPage){
                //比如当前页是倒数第2页或者最后一页,也同样不符合上面这个规则
                this.end = totalPage;
                this.start = end - 5;
            }
        }
    }
//get、set方法。
    public int getPageNum() { return pageNum;}
    public void setPageNum(int pageNum) { this.pageNum = pageNum;}
 
    public int getPageSize() {return pageSize;}
    public void setPageSize(int pageSize) {this.pageSize = pageSize; }
 
    public int getTotalRecord() { return totalRecord; }
    public void setTotalRecord(int totalRecord) {this.totalRecord = totalRecord; }
 
    public int getTotalPage() {  return totalPage; }
    public void setTotalPage(int totalPage) { this.totalPage = totalPage; }
 
    public int getStartIndex() {  return startIndex; }
    public void setStartIndex(int startIndex) { this.startIndex = startIndex; }
 
    public List<T> getList() {  return list; }
    public void setList(List<T> list) { this.list = list;  }
   
    public int getStart() { return start;  }
    public void setStart(int start) {  this.start = start; }
 
    public int getEnd() {  return end;  }
    public void setEnd(int end) { this.end = end; }
}

至此,感谢阅读!🙏

美女2.png