一、需求
页码显示的格式类型于下图所示
显示的主要内容有:
1、总记录数
2、总页数
3、当前页码
4、每页显示的记录数
5、页码列表的第一个页号,如上图右方中的3
6、页码列表的最后一个页号,上图中是12
7、当前页显示的记录的集合
页码列表的格式是左四右五,即以当前页码为中心,左边显示四个页码,右边显示五个页码,如上图中,当前页码是7,所以页码列表为3,4,5,6,7,8,9,10,11,12
二、分页实体
可以根据上面的需求分析,创建分页实体类
Page.java
package com.charlie.shop.domain.page;
/**
* 这是分页实体类
* @author charlie
*
*/
import java.util.List;
public class Page<T> {
/**当前页码,默认是1**/
private int pageNow=1;
/**每页显示的记录数**/
private int pageSize;
/**当前页显示的记录列表**/
private List<T> recordList;
/**总记录数**/
private int recordCount;
/**页码列表的第一个页码**/
private int beginPage;
/**页码列表的最后一个页码**/
private int endPage;
/**总页数**/
private int pageCount;
/**
* 构造器限制为需要四个参数,是确保对象的这四个属性都有值
* @param pageNow 当前页码
* @param pageSize 每页显示的记录
* @param recordCount 总记录
* @param recordList 当前页待显示数据列表
*/
public Page(int pageNow,int pageSize,int recordCount,List<T> recordList){
this.pageNow = pageNow;
this.pageSize = pageSize;
this.recordCount = recordCount;
this.recordList = recordList;
//====下面是计算其他三个属性的值=======
/*
* 计算总页数 两种方式
* 方式一:recordCount/pageSize 如果有余数则要加1,如果刚好整除则不用加1
* 方式二:(recordCount + pageSize - 1) / pageSize
*/
pageCount = (recordCount+pageSize-1)/pageSize;
/*下面计算页码列表的开始索引和结束索引
* 默认是页码列表长度为10: 前面四页索引 +当前页码+后五页
* 如果总页数小于或等于10的话,就全部显示
* 总页数大于10的话:
* 如果前面不够四页就后面补够
* 如果后面不够五页就前面补
*/
//先判断总页数是否在10以内
if(pageCount<=10){
//不超过10页,全部显示即可
beginPage = 1;
endPage = pageCount;
}else if(pageNow-4<1){
//前面不够四页,后面补,即显示最前面10页
beginPage = 1;
endPage = 10;
}else if(pageNow+5>pageCount){
//后面不够五页
endPage = pageCount;
beginPage = endPage-9;
}else {
//前四后五都满足
beginPage = pageNow-4;
endPage = pageNow+5;
}
}
//------下面是getter/setter方法
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public List<T> getRecordList() {
return recordList;
}
public void setRecordList(List<T> recordList) {
this.recordList = recordList;
}
public int getRecordCount() {
return recordCount;
}
public void setRecordCount(int recordCount) {
this.recordCount = recordCount;
}
public int getBeginPage() {
return beginPage;
}
public void setBeginPage(int beginPage) {
this.beginPage = beginPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
}