分页工具类
把分页的概念分享出来。仅供参考
先说实现思路:我这里是使用的MySql的分页,使用limit关键字来实现,如果使用Oracle,需要麻烦一点,使用rownum+子查询来实现分页
MySql语句 limit关键字需要两个参数
select * from emp limit i,j;
i表示起使位置,j表示查询长度
假设一个页面显示3条数据,
那么这里查询的语句就应该是
select * from emp limit 0,3;
第二页:
select * from emp limit 3,3;
第三页:
select * from emp limit 6,3;
这里需要找出一规律就是找到 i 的规律
规律就是: i = (当前页码-1) *3(每页显示数)
看总体的实现:
public class PageUtils {
private static Integer page; //当前页码
private static Integer pageSize; // 每页显示数
private static Integer count; //记录数
private static Integer lastPage; // 尾页
private static Integer nextPage; // 下一页
private static Integer prevPage; // 上一页
private static Integer pagenum; // 当前页码的i
public static Integer getPageSize() {
return pageSize;
}
public static void setPageSize(Integer pageSize) {
PageUtils.pageSize = pageSize;
}
public static void pageUtils(Integer page1, Integer count1, Integer pageSize1) {
page = page1;
count = count1;
pageSize=pageSize1;
init();
}
// 初始化
private static void init() {
if(count%pageSize==0){
lastPage=count/pageSize;
}else{
lastPage=(count/pageSize)+1;
}
nextPage= page==lastPage?lastPage:page+1;
prevPage= page==1?1:page-1;
pagenum= (page-1)*pageSize;
}
public static Integer getPagenum() {
return pagenum;
}
public static void setPagenum(Integer pagenum) {
PageUtils.pagenum = pagenum;
}
public static Integer getCount() {
return count;
}
public static void setCount(Integer count) {
PageUtils.count = count;
}
public static Integer getLastPage() {
return lastPage;
}
public static void setLastPage(Integer lastPage) {
PageUtils.lastPage = lastPage;
}
public static Integer getNextPage() {
return nextPage;
}
public static void setNextPage(Integer nextPage) {
PageUtils.nextPage = nextPage;
}
public static Integer getPrevPage() {
return prevPage;
}
public static void setPrevPage(Integer prevPage) {
PageUtils.prevPage = prevPage;
}
}
使用时先调用pageUtils方法,传入当前页码(page),总记录数(count),每页记录数(pageSize),
接着调用init方法,主要作用就是计算尾页,当前页面的i,下一页,上一页。
// 初始化
private static void init() {
if(count%pageSize==0){
lastPage=count/pageSize;
}else{
lastPage=(count/pageSize)+1;
}
nextPage= page==lastPage?lastPage:page+1;
prevPage= page==1?1:page-1;
pagenum= (page-1)*pageSize;
}
if(xxxxxx)这里主要是判断总记录数是否能整除每页记录数
假设有10条数据,每页3条记录,就需要4页,但是如果只是用 /
Java在做数据计算时会直接抛弃小数点后面的数据。算出来就是3页。这样是不对的所以要进行一个判断
如果能整除,那么直接整除,如果不能整除,那么在整除的基础上,需要加1
这样来保证,记录不会丢失。
下面都是三目运算,来判断是最后一页时,就没有下一页和在第一页时,没有上一页。
版权声明:本文为heshendian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。