分页常用工具类

  • Post author:
  • Post category:其他




分页工具类

把分页的概念分享出来。仅供参考

先说实现思路:我这里是使用的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 版权协议,转载请附上原文出处链接和本声明。