欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自定义分页工具类

程序员文章站 2022-05-26 15:14:09
...

PageHelper结合PageInfo实现分页BUG:例如:pageNum 为 1 ,pageSize 为 10。
原始数据为15条,中间不做数据处理应该返回两页,总共15条数据。

如果我对该原始数据中间做了数据处理返回新的集合后有13条数据,我们想要的结果是两页,共13条数据,但返回的是一页 ,共十条数据。为什么呢?因为PageInfo是在PageHelper查询结果的基础上进行的分页操作,如果我中间做了数据处理返回了新的集合,PageInfo和PageHelper其实操作的并不是同一个集合。

所以PageHelper结合PageInfo实现分页只有在这两个类同时处理一个集合数据时才会生效

package rongheng.sales.utils;

import java.util.List;

public class PageInfoUtil<T> {
    /**
     * 总个数
     */
    private int total;
    /**
     * 总页数
     */
    private int pages;
    /**
     * 每页展示多少条数据
     */
    private int pageSize;
    /**
     * 第几页
     */
    private int pageNum;
    private List<T> list;

    public PageInfoUtil() {
    }

    public PageInfoUtil(List<T> list) {
        this.total = list.size();
        this.list = list;
    }

    public void startPage(int pageNum, int pageSize) {
        this.pages = (int) Math.ceil((double) this.total / pageSize);
        int startIndex = (pageNum - 1) * pageSize;
        int toIndex = startIndex + pageSize;
        if (toIndex > total) {
            setList(list.subList(startIndex, total));
        } else {
            setList(list.subList(startIndex, toIndex));
        }
    }


    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getPages() {
        return pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPageNum() {
        return pageNum;
    }

    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }
}

使用示例

public PageInfoUtil<HashMap<String, Object>> queryExportProduct(@RequestParam Integer pageNum, @RequestParam Integer pageSize, String fuzzyQuery) {
        List<HashMap<String, Object>> list = productService.queryExportProduct(fuzzyQuery);
        PageInfoUtil pageInfo = new PageInfoUtil(list);
        pageInfo.startPage(pageNum, pageSize);
        return pageInfo;
    }
相关标签: Java