工具类
import java.util.List;
/**
* 此工具类 是 分页容器
* 主要用于原生 Oracle 和 MySql 分页查询
* @date 2020年3月21日 20点29分
* @author WuHong
*/
public class Page<T> {
// 对应参数可使用的方法
private List<T> list; //页面对象 set get
private int totalRecord; //总记录条数 set init
private int totalPage; //总页数
//mysql主要参数 limit
private int everyPageDisplayNumber = 10; //每页显示数据条数 可设置默认值 set init
//mysql主要参数 page
private int currentPage = 1; //当前页 可设置默认值 set get init
//oracle主要参数 firstcount
private int pageFirstNumber; //当前页第一条记录的条数 get
//oracle主要参数 lastcount
private int pageLastNumber; //当前页最后一条记录的条数 get
private boolean isFirstPage = false; //是否为第一页 get
private boolean isLastPage = false; //是否为最后一页 get
private boolean hasUpPage = false; //是否有前一页 get
private boolean hasNextPage = false; //是否有下一页 get
private int navigatePages = 8; //导航页码数 可设置默认值 set
private int[] navigatePageNumbers; //显示导航页号 get
/**
* 提供三种构造方式 必传参数 总记录数 totalRecord
* 选传参数不传,便使用默认值
*
* @param totalRecord 总记录数
* @param currentPage 查询页
* @param everyPageDisplayNumber 每页显示条数
*/
public Page(int totalRecord, int currentPage, int everyPageDisplayNumber) {
//自动计算其余参数
initialize(totalRecord, currentPage, everyPageDisplayNumber);
}
public Page(int totalRecord, int currentPage) {
initialize(totalRecord, currentPage, this.everyPageDisplayNumber);
}
public Page(int totalRecord) {
initialize(totalRecord, this.currentPage, this.everyPageDisplayNumber);
}
/* SET */
public void setList(List<T> list) {
//提示类语句可删除 if
if (list.size() != (pageLastNumber-pageFirstNumber)) {
System.out.println(
"==================================================\n" +
"Page 工具类提示您\n" +
"当前页面显示的数据应为:" + (pageLastNumber-pageFirstNumber) + "条\t但你传入的list含有" + list.size() + "条数据\n" +
"===============