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

导读:本篇文章讲解 Page分页工具类,正常情况使用mybatis-plus等插件的分页工具,迫不得已自己实现,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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 …
Page分页工具类,正常情况使用mybatis-plus等插件的分页工具,迫不得已自己实现Page分页工具类,正常情况使用mybatis-plus等插件的分页工具,迫不得已自己实现Page分页工具类,正常情况使用mybatis-plus等插件的分页工具,迫不得已自己实现

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110678.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!