PageHelper的使用

PageHelper

文章目录

  • PageHelper
        • 引入依赖
        • 配置
        • 使用
        • 方法解读
            • PageHelper.startPage
            • Page
            • PageInfo

引入依赖
<!-- spring-boot mybatis pagehelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.1</version>
</dependency>

引入最新的就可以,引入旧版会出现循环依赖问题

以下方法不推荐:

<!-- pageHelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version>
</dependency>

引入这个需要自己去手动注入

@BeanPageHelper pageHelper(){//分页插件PageHelper pageHelper = new PageHelper();Properties properties = new Properties();properties.setProperty("reasonable", "true");properties.setProperty("supportMethodsArguments", "true");properties.setProperty("returnPageInfo", "check");properties.setProperty("params", "count=countSql");pageHelper.setProperties(properties);//添加插件new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper});return pageHelper;}
配置
pagehelper:helper-dialect: mysqlreasonable: truesupport-methods-arguments: true
使用

在查询操作之前调用 startPage 设置分页信息,设置页码和每页的条数

注意startPage只会对下一次SQL查询有效,如果调用两次SQL查询,则需要调用两次startPage

public Object getUsers(int pageNum, int pageSize) {Page<User> page = PageHelper.startPage(pageNum, pageSize);// 不带分页的查询List<UserEntity> list = userMapper.selectAllWithPage();// 将查询结果会自动设置到 Page 对象中System.out.println("listCnt:" + listWithPage.getTotal());// 2. 也可使用 PageInfo 来接收PageInfo<UserEntity> pageinfo = new PageInfo(list);return list;
}
方法解读
PageHelper.startPage

PageHelper.startPage(pageNum, pageSize, count, reasonable, pageSizeZero, reasonablePageSizes) 方法完整的签名如下:

javaCopy code
public static <E> Page<E> startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero, Boolean reasonablePageSizes);

其中,参数的含义如下:

  • pageNum:表示当前页码,即要查询的页数。
  • pageSize:表示每页显示的记录数。
  • count:表示是否进行总记录数的统计。如果设置为 true,PageHelper 会自动在执行分页查询前执行一次 count 查询,获取总记录数;如果设置为 false,则不会执行 count 查询。
  • reasonable:表示是否开启合理化设置。如果设置为 true,PageHelper 会自动根据当前页码和每页大小来调整分页参数,以保证查询结果不为空且不超出数据范围;如果设置为 false,则不开启合理化设置。
  • pageSizeZero:表示是否当 pageSize 参数为 0 时返回全部结果。如果设置为 true,当 pageSize 参数为 0 时,PageHelper 会执行特殊处理,返回全部结果;如果设置为 false,则按照正常逻辑处理,返回空结果。
  • reasonablePageSizes:表示是否在合理化设置中使用合理的每页大小。如果设置为 true,PageHelper 会根据当前页码和每页大小来调整分页参数,以确保每页大小合理;如果设置为 false,则只会根据当前页码来调整分页参数,不考虑每页大小是否合理。
Page

Page 类中的参数主要用于存储分页的相关信息,以及封装分页查询的结果。下面是 Page 类中常用的参数及其含义:

  1. total:总记录数,表示查询结果的总条目数。
  2. pages:总页数,表示查询结果分成的总页数。
  3. pageNum:当前页码,表示当前页是第几页。
  4. pageSize:每页大小,表示每页显示的记录数。
  5. result:当前页的数据列表,存储查询结果的实际数据。
  6. orderBy:排序字段,表示按照哪个字段进行排序。
  7. count:是否进行总记录数的统计,通常在进行分页查询时,会自动统计总记录数。
  8. startRow:当前页的起始行号,表示当前页的第一条记录在整个查询结果中的位置。
  9. endRow:当前页的结束行号,表示当前页的最后一条记录在整个查询结果中的位置。
  10. size:当前页的记录数,表示当前页实际的记录数,通常与 pageSize 相同。
  11. orderByOnly:是否仅对 orderBy 进行排序,通常在进行复杂的分页查询时,可能会用到。
  12. countSignal:是否强制开启 count 查询,表示是否强制进行总记录数的统计。

这些参数可以帮助您更方便地获取分页查询的相关信息,以及处理分页查询的结果。在使用 PageHelper 进行分页查询时,您可以根据需要选择合适的参数来获取和处理分页信息。

PageInfo

PageInfo 类是 PageHelper 提供的用于封装分页查询结果和分页信息的类。下面是 PageInfo 类的构造方法和常用参数:

构造方法:

javaCopy codepublic PageInfo(List<T> list, int navigatePages);
public PageInfo(List<T> list, int navigatePages, int pageNum);
public PageInfo(List<T> list, int navigatePages, int pageNum, long total);
  • list:表示分页查询的结果列表。
  • navigatePages:表示导航页码数量,即在分页导航栏中显示的页码数量。
  • pageNum:表示当前页码。
  • total:表示总记录数。

常用参数和方法

  • total:表示总记录数。
  • pages:表示总页数。
  • pageNum:表示当前页码。
  • pageSize:表示每页大小。
  • size:表示当前页的记录数。
  • navigatePages:表示导航页码数量。
  • navigatepageNums:表示导航页码数组,即分页导航栏中显示的页码列表。
  • list:表示分页查询的结果列表。
  • hasPreviousPage():判断是否有上一页。
  • hasNextPage():判断是否有下一页。
  • isFirstPage():判断是否为第一页。
  • isLastPage():判断是否为最后一页。

这些参数和方法可以帮助您更方便地获取分页查询的相关信息,并进行分页导航和结果展示。您可以根据需要选择合适的构造方法和使用方法,以满足不同场景下的分页需求。

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

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

相关文章

Linux 环境安装 Elasticsearch 8.X

安装前说明 首先确定操作系统&#xff0c;在Linux发行版上执行uname -a查看具体系统。我是Ubuntu系统&#xff0c;可以用直接用apt-get安装&#xff0c;也可以下载tar.gz包手动安装。使用apt-get安装更方便快速&#xff0c;但不同的文件会被安装到不同的目录&#xff0c;不方便…

OSCP靶场--RubyDome

OSCP靶场–RubyDome 考点(CVE-2022-25765 suid ruby提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV 192.168.249.22 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-29 00:28 EDT Nmap scan report for 192.168.249.22 Hos…

实时渲染是什么意思?实时渲染和离线渲染的区别

一、实时渲染是什么意思&#xff1f; 实时渲染是指在计算机程序运行时即时地生成图像和动画的过程&#xff0c;这种渲染技术通常用于网络游戏、虚拟现实和增强现实等需要实时交互的XR应用中。实时渲染需要在每秒内渲染数百万到数十亿个像素&#xff0c;以呈现出平滑的动画和交…

深入并广泛了解Redis常见的缓存使用问题

Redis 作为一门主流技术&#xff0c;缓存应用场景非常多&#xff0c;很多大中小厂的项目中都会使用redis作为缓存层使用。 但是Redis作为缓存&#xff0c;也会面临各种使用问题&#xff0c;比如数据一致性&#xff0c;缓存穿透&#xff0c;缓存击穿&#xff0c;缓存雪崩&#…

ASR6505是基于STM 8位MCU的无线通信芯片组

ASR6505是一种通用的LoRa无线通信芯片组&#xff0c;集成了LoRa无线电收发器、LoRa调制解调器和一个8位CISC MCU ASR6505是基于STM 8位MCU与SX1262 的SiP芯片&#xff0c;相对于32位MCU更具成本优势&#xff0c;8mm*8mm*0.9mm超小尺寸可以满足客户不同的产品规格&#xff0c;Q…

锁(Lock)

1.死锁 (1). 概念 : 不同的线程分别占据着对方的资源不放弃&#xff0c;都在等待对方放弃自己需要的资源&#xff0c;这样就形成了死锁. 一旦出现死锁&#xff0c;程序即不会给出异常&#xff0c;也不会给出提示信息&#xff0c;只是所有线程处于阻塞状态&#xff0c;无法进行.…

CentOS 7.9上安装Redis

在CentOS 7.9上安装Redis通常涉及以下步骤&#xff1a; 下载Redis源代码&#xff1a; 首先&#xff0c;你需要从Redis官网或者使用Git克隆获取Redis的源代码。由于Redis通常不需要特定的操作系统版本&#xff0c;你可以使用任何版本的CentOS来安装Redis。 通过Git克隆源代码&am…

39.基于SpringBoot + Vue实现的前后端分离-无人智慧超市管理系统(项目 + 论文PPT)

项目介绍 随着互联网时代的发展&#xff0c;传统的线下管理技术已无法高效、便捷的管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;国家在环境要求不断提高的前提下&#xff0c;无人智慧超市管理系统建设也逐渐进入了信…

2024蓝桥杯省赛保奖突击班-Day2-前缀和、差分、尺取_笔记_练习题解

3月25日-课堂笔记 前缀和预处理 O ( n ) \mathcal{O}(n) O(n) s[1] a[1]; for(int i 2; i < n; i)s[i] s[i - 1] a[i];利用前缀和查询区间和 O ( 1 ) O(1) O(1) long long calc(int l, int r) {return l 1 ? s[r] : s[r] - s[l - 1]; }差分序列的求法 c[1] a[…

电子元器件商城模式的安全与风险管理

电子元器件商城模式的安全与风险管理至关重要&#xff0c;特别是在当前数字化和网络化的环境下。以下是一些关键的安全考虑和风险管理策略&#xff1a; 数据安全与隐私保护&#xff1a; 保护客户的个人和交易数据是至关重要的。使用加密技术来保护数据传输和存储&#xff0c;确…

Qt Creator 与 VS 开发 Qt 项目的详细比较(详细版)

Qt Creator 与 VS 开发 Qt 项目的详细比较 简介 Qt 是一个功能强大、跨平台的应用程序框架&#xff0c;可用于开发各种类型的应用程序&#xff0c;包括桌面应用程序、移动应用程序和嵌入式应用程序。 Visual Studio 是 Microsoft 开发的集成开发环境 (IDE)&#xff0c;可用于…

Linux内网提权

一、SUID提权 前提条件&#xff1a; &#xff08;1&#xff09;SUID仅对二进制有效&#xff08;2&#xff09;执行者对于该程序需要有x的可执行权限&#xff08;3&#xff09;本权限仅在程序的执行过程中有效 1、设置SUID权限&#xff1a;&#xff08;root权限&#xff09; …

AI新工具 小模型也有大智慧Qwen1.5-MoE;大模型动态排行榜;马斯克更新Grok-1.5

✨ 1: Qwen1.5-MoE 阿里巴巴一款小型 MoE 模型&#xff0c;只有 27 亿个激活参数&#xff0c;但性能与最先进的 7B 模型&#xff08;如 Mistral 7B 和 Qwen1.5-7B&#xff09;相匹配。 Qwen1.5-MoE是一个使用混合专家模型&#xff08;Mixture-of-Experts&#xff0c;MoE&…

小型分布式文件存储系统GoFastDfs应用简介

前言 最近稍微留意了一下各个文件存储系统的协议&#xff0c;发现minio是LGPLV3, 而fastdfs 是GPL3,这些协议其实对于商业应用是一个大坑。故而寻找一些代替品。 go-fastdfs就是其中之一&#xff0c;官网在&#xff1a; go-fastdfs 具体应用 其实可以直接查看官网教程的。 下…

【学习】JMeter和Postman两种测试工具的主要区别有哪些

Postman和JMeter都是常用的API测试工具&#xff0c;但它们之间存在一些不同之处。以下是Postman和JMeter的主要区别&#xff1a; 语言支持 Postman是一个基于Chrome的应用程序&#xff0c;因此它使用JavaScript作为编程语言。这意味着你可以使用JavaScript来编写测试脚本和断…

element-ui升级到element-plus兼容性问题处理

1.报错&#xff1a;dropdown-item.mjs:42 Uncaught (in promise) TypeError: Cannot destructure property ‘onItemEnter’ of ‘(0 , vue__WEBPACK_IMPORTED_MODULE_0__.inject)(…)’ as it is undefined. 对应的源码位置如下&#xff0c;是elemen-plus中的dropdown-item文件…

【2024系统架构设计】案例分析- 4 嵌入式

目录 一 基础知识 二 真题 一 基础知识 1 基本概念 ◆系统可靠性是系统在规定的时间内及规定的环境条件下,完成规定功能的能力,也就是系统无故障运行的概率。或者,可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。

基于springboot+vue+Mysql的家政服务管理平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

基于STC12C5A60S2系列1T 8051单片机通过单个按键单击次数实现开关机应用

基于STC12C5A60S2系列1T 8051单片机通过单个按键单击次数实现开关机应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍基于STC12C5A60S2系列1T 8051单片机通过单个按…

QT 常见报错解决记录

窗体一闪而过 解决办法&#xff0c;为其开辟内存空间 int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow mainWindow;int resmainWindow.exec();if(resQDialog::Accepted){ExamDialog *exam;examnew ExamDialog;}else{return 0;}// ExamDialog c;// …