SpringBoot 引入分页插件 PageHelper

官网

https://pagehelper.github.io/docs/howtouse/
在这里插入图片描述

引入步骤

第1步:引入依赖

<!--分页插件-->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.2</version>
</dependency>

在这里插入图片描述

第2步:配置拦截器插件

@Configuration
public class AppConfig {@Beanpublic PageInterceptor pageInterceptor() {PageInterceptor pageInterceptor = new PageInterceptor();Properties properties = new Properties();// 分页合理化,true开启,如果分页参数不合理会自动修正。默认false不启用properties.setProperty("reasonable", "true");pageInterceptor.setProperties(properties);return pageInterceptor;}}

[Ref] 整合PageHelper实现分页

在这里插入图片描述

第3步:插件的使用

前提: 业务提供 查询所有学生的方法

// com.zhangziwa.practisesvr.mapper.UserMapper#listStudents
<select id="listStudents" resultMap="StudentMap">SELECT * FROM students
</select>// com.zhangziwa.practisesvr.mapper.UserMapper
List<Student> listStudents();

在这里插入图片描述

不使用分页插件 会查出全部

List<Student> students = userMapper.listStudents();

在这里插入图片描述

在这里插入图片描述

方式1:PageInfo

public List<Student> listStudents2(Integer pageNum, Integer PageSize) {PageHelper.startPage(1, 10, true);PageHelper.orderBy("age asc");List<Student> students = userMapper.listStudents();PageInfo<Student> studentPageInfo = PageInfo.of(students);return students;
}

在这里插入图片描述
在这里插入图片描述

方式2:Page

public List<Student> listStudents2(Integer pageNum, Integer PageSize) {PageHelper.startPage(1, 10, true);PageHelper.orderBy("age asc");Page<Student> students = (Page<Student>) userMapper.listStudents();return students;
}

在这里插入图片描述

在这里插入图片描述

方式3:多数据源聚合时的手工分页

public List<Student> listStudents3(Integer pageNum, Integer pageSize) {// 模拟数据聚合List<Student> students3 = new ArrayList<>();List<Student> students1 = userMapper.listStudents();List<Student> students2 = userMapper.listStudents();students3.addAll(students1);students3.addAll(students2);Page<Student> studentsPage = PageHeaderUtils.manualPage(students3, pageNum, pageSize);return studentsPage;
}
// 数据聚合场景下的手工分页
// 也适合EmptyList场景 Page{count=true, pageNum=1, pageSize=10, startRow=0, endRow=0, total=0, pages=0, reasonable=null, pageSizeZero=null}
public static <E> Page<E> manualPage(List<E> res, Integer pageNum, Integer pageSize) {if (res == null) {res = new ArrayList<>();}int pageNumber = PageUtils.getPageNum(pageNum);int sizePerPage = PageUtils.getPageSize(pageSize);int totalSize = res.size();List<E> pageElements = res.stream().skip((long) (pageNumber - 1) * sizePerPage).limit(sizePerPage).toList(); // 分页Page<E> page = new Page<>();page.setPageNum(pageNumber);page.setPageSize(sizePerPage);page.setTotal(totalSize);page.setPages((totalSize / pageSize + ((totalSize % pageSize == 0) ? 0 : 1)));page.addAll(pageElements);return page;
}

在这里插入图片描述

在这里插入图片描述

常见问题

[Q&A] 在系统中发现了多个分页插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/620527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vue技巧】在Vue中使用防抖节流

ChatGPT4.0国内站点&#xff1a;海鲸AI 在Vue中使用防抖(debounce)和节流(throttle)是一种优化性能的方法&#xff0c;特别是在处理高频事件时&#xff0c;比如resize、scroll、input等。防抖和节流可以减少这些事件处理函数被调用的频率&#xff0c;从而减少CPU的计算压力和避…

Open3D 计算点云质心和中心(18)

Open3D 计算点云质心和中心(18) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 质心和中心是有所区别的,点云质心可以看作每个点的坐标均值,点云中心可以看作点云所在包围盒的中心,这也是上一章坐标最值的常用方法,下面就两种方法进行实现(图例,大概就是这个意思…

Android WiFi Service启动-Android13

Android WiFi Service启动 - Android13 1、SystemServer中入口2、WifiService启动2.1 关键类概要2.2 启动时序图 Android WiFi基础概览 AOSP > 文档 > 心主题 > WiFi概览 1、SystemServer中入口 编译生成对应的jar包&#xff1a;"/apex/com.android.wifi/javalib…

高性能RPC框架解密

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

力扣210. 课程表 II

深度优先遍历 思路&#xff1a; 搜索逻辑参见​​​​​​力扣207.课程表需要课程安排的顺序&#xff0c;课程搜索完成时&#xff0c;将其存储起来即可&#xff1b;存储课程的顺序需要注意&#xff1a; 输入依赖中 [A, B]图中表示 B -> A &#xff0c;表示先 B 后 A&#x…

Wargames与bash知识15

Wargames与bash知识15 Bandit23 基于时间的作业调度程序cron会定期自动运行一个程序。在/etc/cron.d/中查找配置&#xff0c;并查看正在执行的命令。 注意&#xff1a;此级别要求您创建自己的第一个shell脚本。这是一个很大的进步&#xff0c;当你达到这个水平时&#xff0c;…

编译和链接(2)

3. 预处理详解 3.2#define 3.2.5带副作用的宏参数 当宏参数在宏的定义中出现超过一次的时候&#xff0c;如果参数带有副作用&#xff0c;那么你在使用这个宏的时候就可能 出现危险&#xff0c;导致不可预测的后果。副作用就是表达式求值的时候出现的永久性效果。 例如&…

nmealib 库移植 - -编译报错不完全类型 error: field ‘st_atim’ has incomplete type

一、报错提示-不完全类型(has incomplete type) Compiling obj/main.o from main.c.. arm-linux-gcc -g -w -stdgnu99 -DLINUX -I./ -Inmealib/inc/ -c -o obj/main.o main.c In file included from /home/user/Desktop/nuc980-sdk/sdk/arm_linux_4.8/usr/include/sys/stat…

【c/python】用GTK实现一个带菜单的窗口

一、用python 在GTK中创建一个带菜单的窗口&#xff0c;可以通过使用Gtk.MenuBar、Gtk.Menu和Gtk.MenuItem组件来构建菜单。以下是一个基本的例子&#xff0c;展示了如何使用Python的PyGObject库创建一个简单的带菜单栏的GTK窗口。 import gi gi.require_version(Gtk, 3.0) f…

debian apt 装 mysql8

MySQL &#xff1a;&#xff1a; MySQL 8.0 参考手册 &#xff1a;&#xff1a; 2.5.5 使用来自 Oracle 的 Debian 软件包在 Linux 上安装 MySQL apt install -f lsb-release gnupg wget https://repo.mysql.com//mysql-apt-config_0.8.29-1_all.deb dpkg -i mysql-apt-config…

【软件测试】学习笔记-不同视角的软件性能与性能指标

本篇文章探讨新的测试主题&#xff1a;性能测试&#xff0c;因为性能测试的专业性很强&#xff0c;所以我会以从0到1的入门者视角&#xff0c;系统性地阐述性能测试的方法以及应用领域&#xff0c;用实例去诠释各种性能指标。 本篇文章站在全局的视角&#xff0c;帮你梳理软件性…

【Python机器学习】决策树——树的特征重要性

利用一些有用的属性来总结树的工作原理&#xff0c;其中最常用的事特征重要性&#xff0c;它为每个特征树的决策的重要性进行排序。对于每个特征来说&#xff0c;它都是介于0到1之间的数字&#xff0c;其中0代表“根本没有用到”&#xff0c;1代表“完美预测目标值”。特征重要…

【复现】网康科技-防火墙存在RCE漏洞_17

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 网康下一代防火墙(NGFW)是一款可以全面应对应用层威胁的高性能防火墙。通过深入洞察网络流量中的用户、应用和内容&#xff0c;并…

Vulnhub靶机:driftingblues 2

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;driftingblues2&#xff08;10.0.2.18&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entr…

删除排序链表中的重复元素

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只…

Vue-Awesome-Swiper基本能解决你所有的轮播需求(vue的问题)

在我们使用的很多ui库&#xff08;vant、antiUi、elementUi等&#xff09;中&#xff0c;都有轮播组件&#xff0c;对于普通的轮播效果足够了。但是&#xff0c;某些时候&#xff0c;我们的轮播效果可能比较炫&#xff0c;这时候ui库中的轮播可能就有些力不从心了。当然&#x…

Linux read命令教程:交互式读取用户输入(附案例详解和注意事项)

Linux read命令介绍 read命令是处理从键盘或其它输入设备读入字符的一个简单命令。常见用法就是在shell脚本中用来读取用户的输入。除此之外&#xff0c;也可以从文件中读取内容或处理由其它命令输出的内容。 Linux read命令适用的Linux版本 read命令在所有主流的Linux发行版…

springboot(ssm甘肃旅游管理系统 在线旅游景点管理系统 Java系统

springboot(ssm甘肃旅游管理系统 在线旅游景点管理系统 Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#x…

YOLOv5改进 | 注意力篇 | CGAttention实现级联群体注意力机制 (全网首发改进)

一、本文介绍 本文给大家带来的改进机制是实现级联群体注意力机制CascadedGroupAttention,其主要思想为增强输入到注意力头的特征的多样性。与以前的自注意力不同,它为每个头提供不同的输入分割,并跨头级联输出特征。这种方法不仅减少了多头注意力中的计算冗余,而且通过增…