Page分页工具类,正常情况使用mybatis-plus等插件的分页工具,迫不得已自己实现_pageutil 工具类 应对mybatisplus的_时间是一种解药的博客-程序员宅基地

技术标签: java  mybatis  java开发常遇问题  数据库  

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: 我干脆自己下车 指挥乐坛的交通

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cucgyfjklx/article/details/125662746

智能推荐

孙鑫《vc ++深入详解》第五章文本编程-程序员宅基地

文章浏览阅读933次。1,创建插入符:void CreateSolidCaret( int nWidth, int nHeight );//创建插入符void CreateCaret( CBitmap* pBitmap );//创建位图插入符void ShowCaret( );//显示插入符void HideCaret( );//隐藏插入符static void PASCAL SetCaretPos( POINT po

【杂七杂八的笔记】2019CVPR论文快读-程序员宅基地

文章浏览阅读1k次。2019年CVPR一共收到创纪录的5165篇有效投稿,比2018年的3309篇多出近2000篇,最终有1294篇论文被接收,最终录取率为25.2%。1294篇录取论文中,有288篇被录用为Oral论文。现在,距离2020年CVPR的截稿还剩整整一个月,在这种紧迫的时间里,2019CVPR的快读就处于比较尴尬的位置。但是无论怎样也用这篇博客预祝伙(大)伴(佬)们Paper都中!都中!全都中!!! 附...

RT_thread STM32通用Bootloader 做OTA升级_rtthread 如何远程升级-程序员宅基地

文章浏览阅读2.2w次,点赞13次,收藏56次。项目上需要做设备的远程升级更新程序,从而避免每次更新程序时都需要去现场烧录的麻烦。从而学习探索了RT提供的OTA功能。 RT-Thread 开发团队提供了通用的 Bootloader。开发者通过该 Bootloader 即可直接使用 RT-Thread OTA 功能,轻松实现对设备端固件的管理、升级与维护。" 引用于官方资料文档。 主要参考资料: 1.官方文档资料ht..._rtthread 如何远程升级

Go语言-【结构体】-将结构体数据保存为JSON格式数据_结构体序列化为json_xyz的博客-程序员宅基地

文章浏览阅读1.4k次。JSON格式是一种用途广泛的对象文本格式。在Go语言中,结构体可以通过系统提供的json.Marshal()函数进行序列化。为了演示怎样通过反射获取结构体成员及各种值的过程,下面使用反射将结构体序列化为文本数据。数据结构及入口函数将结构体序列化为JSON的步骤如下:准备数据结构体。 准备要序列化的结构体数据。 调用序列化函数。具体代码如下所示:funcmain(){//声明技能结构typeSkillstruct{NamestringLevelint}//声明角色结构typeActor_结构体序列化为json

音视频高级开发——如何快速学习FFmpeg丨ffplay、ffmpeg命令如何编程实现_ffplay编程-程序员宅基地

文章浏览阅读191次。如何更快速地掌握FFmpeg1.为什么要学FFmpeg2.FFmpeg面向对象思想分析3.ffplay、ffmpeg命令如何编程实现4.流媒体服务器要怎么学【技术分享篇】音视频开发——如何快速学习FFmpeg丨ffplay、ffmpeg命令如何编程实现更多Linux服务器开发高阶完整视频分享,点击链接即可观看:https://ke.qq.com/course/417774?flowToken=1013189内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Red_ffplay编程

Git版本控制_git 断开版本控制-程序员宅基地

文章浏览阅读138次。最近在找工作,突然意识到技术博客的重要性了其实,如果推行SVN的化,可能推行的难度会降低很多。不过lark说既然推行一个新的版本管理工具,总要花费一定的时间进行培训、部署、转换。而推行Git和SVN的代价不如想象中差距那么大。因此,不如就多花些精力推行Git , 可以带来更多的好处。 这个想法说服了我。 然后就开始筹备了。我发现网上很多git教程对一些基础命令(比如git-reset)的介绍还_git 断开版本控制

随便推点

Java 34---设计模式-程序员宅基地

文章浏览阅读136次。导读1.单例模式2.迭代模式单例模式单例模式迭代模式代码链接

阿里云服务器如何防DDOS攻击_阿里云服务器网站防攻击-程序员宅基地

文章浏览阅读3.7k次。阿里云服务器如何防DDOS攻击?下面小编就为大家介绍下阿里云服务器如何防DDOS攻击方法/步骤 首先登陆阿里云控制台,点击左侧的产品与服务 点击DDOS基础防护进入云盾-DDOS基础安全控制台里面 这里我们可以看到你的基础DDOS防护能力,这个能力是可以通过一系列手段提升的,包括你的安全信誉分,阿里云整体带宽利用率,购买防护包等等 点击左侧..._阿里云服务器网站防攻击

vs格式化json 不生效,的Visual Studio 2012项目 - 无法加载“Newtonsoft.Json”-程序员宅基地

文章浏览阅读146次。On running a windows phone project in VS 2012, I was getting this error:{System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyT...

Codeforces Round #446 (Div. 2) A-C 题解_codeforce 446div2-程序员宅基地

文章浏览阅读748次。A. Greedtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputJafar has n cans of cola. Each can is described by two integers: remaining volume of cola ai and can's capacity bi (ai  ≤  bi).Jafar has de_codeforce 446div2

JZOJ 2256. 【BZOJ 2256】【ZJOI 2008】树的统计_zjoi 2256-程序员宅基地

文章浏览阅读946次,点赞2次,收藏2次。Description  一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。   我们将以下面的形式来要求你对这棵树完成一些操作:   I. CHANGE u t : 把结点u的权值改为t   II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值   III. QSUM u v: 询问从点u到点v的路径上的节点的权值和   注意:从点u到点v的路径上_zjoi 2256

JAVA SE学习day14:XML语言_java xml中的翻译-程序员宅基地

文章浏览阅读239次。一、XML语言1、什么是XML语言?Extensible Markup Language,翻译为可扩展标记语言。Xml技术是w3c组织发布的,目前遵循的是W3C组织在2000年发布的XML1.0规范。2、XML语言用语解决什么类型的问题?xml语言出现的根本目标是,描述有关系的数据。在xml语言中,允许用户自定义标签。一个标签用于描述一段数据,一个标签可以分为开始标签和结束标签,子啊开始标签和结束标签之间,又可以使用其他标签米啊搜狐其他数据,以此来实现数据关系的描述。3、xml语言常见应用x_java xml中的翻译

推荐文章

热门文章

相关标签