实现分页功能的方式很多,其中较为便捷的就是分页插件,这里是我自己封装的分页工具类,便于以后拿来直接用。逻辑简单、易于理解、封装轻巧、便于使用,当然追求强大功能的项目还是去引分页插件的依赖吧。
代码:
import java.util.List;
/**
* 分页辅助类
* 分页参数计算半自动化 辅助传递参数
* 必须先初始化查询 表 的 数据总数 totalItems
* @param <T> 查询的参数类型
*/
public class PageInfo<T> {
private int lastPage; //上一页
private int currentPage; //当前页
private int nextPage; //下一页
private int totalItems; //总条目数
private int totalPage; //总页码、尾页
private int pageSize = 5; //单页显示大小 默认大小: 5 条
private List<T> data; //查询到的数据
/**
* 创建对象时,必须初始化总条目数,也就是说必须先查对应的表的总条目数!
* @param totalItems
*/
public PageInfo(int totalItems) {
this.totalItems = totalItems;
this.totalPage = totalItems % pageSize == 0 ? (totalItems / pageSize) : ((totalItems / pageSize) + 1);
}
/**
* 设置尾页大小,在构造函数中自动设置
* @param totalPage
*/
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
/**
* 必须先设置尾页大小
* 设置当前需要查询的页码时,要判断接受参数的合法性
* @param currentPage
*/
public void setCurrentPage(int currentPage) {
//如果当前页的值在 1 和 尾页(totalPage) 之间,为合法数据保存
if (currentPage >= 1 && currentPage <= totalPage) {
//页码正常
System.out.println("页码正常");
this.currentPage = currentPage;
} else if (currentPage < 1) {
//如果当前页小于 1 则显示首页
System.out.println("页码小于1 , 使用默认页码 1");
this.currentPage = 1;
} else if (currentPage > totalPage) {
//如果当前页大于 尾页 则显示尾页
System.out.println("页码大于尾页 , 使用尾页 "+totalPage);
this.currentPage = totalPage;
}
this.lastPage = this.currentPage - 1;
this.nextPage = this.currentPage + 1;
}
/**
* 修改页面大小(显示条目数),级联修改页码总数(尾页)
* 重新设值 current Page 的合理值
* @param pageSize
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
this.totalPage = totalItems % pageSize == 0 ? (totalItems / pageSize) : ((totalItems / pageSize) + 1);
setCurrentPage(this.currentPage);
}
public void setData(List<T> data) {
this.data = data;
}
public int getLastPage() {
return lastPage;
}
public int getCurrentPage() {
return currentPage;
}
public int getNextPage() {
return nextPage;
}
public int getTotalItems() {
return totalItems;
}
public int getTotalPage() {
return totalPage;
}
public int getPageSize() {
return pageSize;
}
public List<T> getData() {
return data;
}
}