Page分页工具类,正常情况使用mybatis-plus等插件的分页工具,迫不得已自己实现

问题背景

由于xml中写了一个多表关联的sql语句,并且是多对多,导致查询出来的是有自己不需要的重复语句,更坑的是,可能sql自己写得澜,去重功能distinct和order by在特殊条件下不能同时使用,报错:Expression #1 of ORDER BY clause is not in SELECT list, references column ‘fusion.m.create_time’ which is not in SELECT list; this is incompatible with DISTINCT,所以我是把所有数据查询出来之后,自己做了一个去重,再进行分页,如果使用插件的分页,一开始就会把分页设置传入进去,出来的时候分页是带重复的数据,这个时候去重,页面显示出来的就没有一开始传入的分页参数这么多,比如每页需要显示20条,这个时候就只剩10条了

PageUtils分页工具类

1 分页方法

package com.dz.fusion.support.common;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author suolong
 * @Date 2022/7/6 19:05
 * @Version 2.0
 */
@Data
public class PageUtils<T> {

    private List<T> pages;    //数据
    private long totalCount;    //总数
    private int pageIndex;    //当前页
    private int totalPages;    //总页数


    /**
     * <p>分页方法</p>
     * <p>参数(当前页码,每页行数)</p>
     * <p>返回	pages 数据</p>
     * <p>		totalCount	总数</p>
     * <p>		pageIndex	当前页</p>
     * <p>		totalPages	总页数</p>
     */
    public PageUtils(int pageIndex, int hang, List<T> pages) {

        int fist = pageIndex * hang - hang;    //获取当前页的第一行下标
        int last = pageIndex * hang;        //获取当前页的最后一行下标+1
        if (last > pages.size()) last = pages.size();

        List<T> page = new ArrayList<T>();
        for (int s = fist; s < last; s++) {
            page.add(pages.get(s));
        }

        this.pages = page;        //分页数据
        this.totalCount = pages.size();    //总行数
        this.pageIndex = pageIndex;        //当前页
        this.totalPages = (int) Math.ceil((float) pages.size() / hang);    //总页数
    }

}

2 使用方式

        List<User> list= baseMapper.selectList();
        PageUtils<User> userPages = new PageUtils<>(页码, 每页行数, list);
        long totalCount = userPages.getTotalCount();    //总行数        
        List<User> records = userPages .getPages();    //每页的数据




作为程序员第 197 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

Lyric: 我干脆自己下车 指挥乐坛的交通

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐