分页常用工具类

    科技2024-10-29  22

    分页工具类

    把分页的概念分享出来。仅供参考 先说实现思路:我这里是使用的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 这样来保证,记录不会丢失。

    下面都是三目运算,来判断是最后一页时,就没有下一页和在第一页时,没有上一页。

    Processed: 0.008, SQL: 8