分页信息的封装:当前页、当前页条目数、排序规则、排序字段、总页数、总条目数、返回数据详细记录(List<T>)
一、源码
(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; }
}
至此,感谢阅读!🙏