SpringBoot之整合PageHelper分页插件

SpringBoot之整合PageHelper分页插件

文章目录

  • SpringBoot之整合PageHelper分页插件
  • 1. 引入坐标
  • 2. application.yml配置
  • 3. 基本使用
  • 4. 对多个查询执行分页
    • 1. 默认第一个Select语句会执行分页
    • 2. 让Pagehelper也能执行多个分页的方法
    • 3. 完整案例

详细配置请查看官网或MyBatis分页插件之PageHelper详细介绍-CSDN博客

1. 引入坐标

<!--pagehelper--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.0</version><!--排除pagehelper的依赖mybatis和mybatis-spring的jar包以免与mybatis-plus的冲突,导致报NoClassFound org.mybatis.logging.LoggerFactory--><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId></exclusion></exclusions></dependency>

2. application.yml配置

pagehelper:helper-dialect: mysqlreasonable: truesupport-methods-arguments: trueparams: count=countSql

3. 基本使用

    @Autowiredprivate PublicService publicService;	   @GetMapping(value = "/getUserList")public Result<PageInfo> getUserList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,@RequestParam(name="pageSize", defaultValue="5") Integer pageSize){StringBuffer sql = new StringBuffer();sql.append("SELECT\n" +" a.id,\n" +" a.username,\n" +" b.id AS file_id,\n" +" b.file_url,\n" +" b.file_size,\n" +"FROM\n" +" sys_user a\n" +" LEFT JOIN sys_file b ON a.id = b.parent_id \n" +"WHERE\n" +" a.del_flag = '0'");Result result = new Result<>();Map map = new HashMap(5);map.put("sql",sql.toString());//获取第pageNo页,pageSize条内容,默认查询总数countPageHelper.startPage(pageNo, pageSize);//紧跟着的第一个select方法会被分页List<Map<String, Object>> mapList = publicService.sqlQuery(map);result.setResult(mapList);result.setSuccess(true);PageInfo pageInfo = new PageInfo(mapList);return Result.OK(pageInfo);

4. 对多个查询执行分页

Pagehelper中只有紧跟在 PageHelper.startPage 方法后的第一个 Mybatis 的查询(Select)方法会被分页。

1. 默认第一个Select语句会执行分页

案例代码如下:

 
@Autowired
private PublicService publicService;public List<SignatureUser> getUserList(){//获取第pageNo页,pageSize条内容,默认查询总数countPageHelper.startPage(pageNo, pageSize);//紧跟着的第一个select方法会被分页List<Map<String, Object>> mapList = publicService.sqlQuery(map);IPage iPage = IPageUtil.pageData(mapList);//下面这个查询不会分页List<SignatureUser> signatureUserList = publicService.getSignatureUserList(map);System.out.println(signatureUserList.size());return signatureUserList;
}

2. 让Pagehelper也能执行多个分页的方法

在查询参数中设置pageNum与pageSize参数使其第二个查询也能分页,如下:

@Autowired
private PublicService publicService; public List<SignatureUser> getUserList(){//获取第pageNo页,pageSize条内容,默认查询总数countPageHelper.startPage(pageNo, pageSize);//紧跟着的第一个select方法会被分页List<Map<String, Object>> mapList = publicService.sqlQuery(map);IPage iPage = IPageUtil.pageData(mapList);System.out.println("第一个查询分页结果",iPage);Map map1 = new HashMap(3);//加入mybatis分页的参数pageNum与pageSize则其他查询也能分页map1.put("pageNum", pageNo);map1.put("pageSize", pageSize);List<SignatureUser> signatureUserList = publicService.getSignatureUserList(map1);System.out.println(signatureUserList.size());return signatureUserList;
}

3. 完整案例

    @Autowiredprivate PublicService publicService; @ApiOperation(value = "用户信息列表", notes = "用户信息列表")@GetMapping(value = "/getUserList")public Result<?> getUserList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,@RequestParam(name="pageSize", defaultValue="5") Integer pageSize){StringBuffer sql = new StringBuffer();sql.append("SELECT\n" +" a.id,\n" +" a.username,\n" +" b.id AS file_id,\n" +" b.file_url,\n" +" b.file_size,\n" +"FROM\n" +" sys_user a\n" +" LEFT JOIN sys_file b ON a.id = b.parent_id \n" +"WHERE\n" +" a.del_flag = '0'");//一.直接sql方式分页Map map = new HashMap(5);map.put("sql",sql.toString());//获取第pageNo页,pageSize条内容,默认查询总数countPageHelper.startPage(pageNo, pageSize);//紧跟着的第一个select方法会被分页List<Map<String, Object>> mapList = publicService.sqlQuery(map);IPage iPage = IPageUtil.pageData(mapList);//return Result.OK(iPage);//二.对象集合分页Map map1 = new HashMap(3);map1.put("pageNum", pageNo);map1.put("pageSize", pageSize);List<SignatureUser> signatureUserList = publicService.getSignatureUserList(map1);System.out.println(signatureUserList.size());return Result.OK(IPageUtil.pageData(signatureUserList));}

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

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

相关文章

程序员为什么不喜欢关电脑?

目录 标题&#xff1a;程序员为何乐见电脑长时间处于关闭状态&#xff1f; 引言&#xff1a; 一、思维的延续性&#xff1a; 二、环境的连续性&#xff1a; 三、长时间开机的原因&#xff1a; 四、恢复成本的考量&#xff1a; 结论&#xff1a; 特别的&#xff1a; 不是…

c++ 子进程交互 逻辑

目录 一、主进程逻辑 1、创建子进程时候,写入自己的HWND 2、响应子进程消息

亿某通电子文档安全管理系统 UploadFileToCatalog SQL注入漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

leetcode | 杨辉三角 | 电话号码配对

电话号码的字母组合 class Solution {string _num[10] {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};public:void Combinations(const string& di…

Python __file__属性:查看模块的源文件路径

除可以查看模块的帮助信息之外&#xff0c;还可以直接阅读模块的源代码来掌握模块功能&#xff0c;提升 Python 编程能力。 不管学习哪种编程语言&#xff0c;认真阅读那些优秀的框架、库的源代码都是非常好的学习方法。 通过模块的 __file__ 属性即可查看到指定模块的源文件…

防范恶意勒索攻击!亚信安全发布《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件81起&#xff0c;事件数量有所下降&#xff0c;比上月降低20%。 lockbit3.0仍然是影响最严重的勒索家族&#xff1b;akira和incransom也是两个活动频繁的恶意家族&#xff0c;需要注意防范。 本周alphv勒索组织窃取MBC法律专业公司…

LangChain 最近发布的一个重要功能:LangGraph

LangGraph 是 LangChain 最近发布的一个重要功能&#xff0c;LangChain 进入多代理框架领域。通过建立在LangChain 之上&#xff0c;LangGraph 使开发人员可以轻松创建强大的代理运行时。 LangChain 使用其表达语言&#xff08;LCEL&#xff09;为开发人员构建定制链提供技术支…

MySQL之库操作和字符集

华子目录 MySQL库操作查看库创建数据库查看创建的数据库查看警告 删除数据库切换数据库显示当前数据库的变量值信息MySQL行格式行格式介绍显示行格式信息查看当前使用的数据库查看当前数据库版本查看当前用户查看所有用户查看MySQL支持的存储引擎显示当前数据库中所有表执行系统…

基于ESP-WROOM-32的双串口通信并显示到OLED显示屏上

目录 开发板引脚图 Arduino环境配置1.ESP32开发版下载2.Arduino开发板选择 -> ESP32 Dev Module3.安装驱动库 接线图Arduino代码现象演示 开发板 ESP-WROOM-32 引脚图 Arduino环境配置 1.ESP32开发版下载 选择 esp32 by Espressif Systems 2.Arduino开发板选择 -> E…

网络爬虫,使用存放在C的谷歌驱动报错

月 06, 2024 11:43:40 上午 org.openqa.selenium.os.OsProcess checkForError 严重: org.apache.commons.exec.ExecuteException: Execution failed (Exit value: -559038737. Caused by java.io.IOException: Cannot run program "C:\chromedriver121.exe" (in dir…

百面嵌入式专栏(面试题)进程管理相关面试题1.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍进程管理相关面试题 。 一、进程管理相关面试题 进程是什么?操作系统如何描述和抽象一个进程?进程是否有生命周期?如何标识一个进程?进程与进程之间的关系如何?Linux操作系统的进程0是什么?Linux操…

2023年12月CCF-GESP编程能力等级认证Python编程六级真题解析

Python等级认证GESP(1~6级)全部真题・点这里 一、单选题(共15题,共30分) 第1题 通讯卫星在通信网络系统中主要起到( )的作用。 A:信息过滤 B:信号中继 C:避免攻击 D:数据加密 答案:B 第2题 小杨想编写一个判断任意输入的整数N是否为素数的程序,下面哪个方法…

Unity类银河恶魔城学习记录2-1.2.3.4.5 背景和摄像机相关设置 P42-p45

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ParallaxBackground.cs using System.Collections; using System.Collect…

Leetcode刷题笔记题解(C++):590. N 叉树的后序遍历

思路&#xff1a;类似于二叉树的排序&#xff0c;这里需要将子树进行依次递归遍历&#xff0c;前序遍历也与之类似 /* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val) {val _val;}Node(int _val, vector<N…

编辑最爱,轻松制作GIF图片,这几款MacOS工具不能少!

GIF是图片的一种格式&#xff0c;是动态图片&#xff0c;如果说一图胜千言&#xff0c;那么一张动态gif图片恐怕就是一本书了。想要编辑独一无二的GIF图片&#xff0c;这几款MacOS工具不能少&#xff01; LICEcap➤Gif录制工具 LICEcap for Mac软件&#xff0c;操作功能非常的…

JSch - 配置SFTP服务器SSH免密登录

文章目录 1. 什么是SFTP2. 什么是Jsch以及它的作用3. Linux中配置SSH密钥登录4. sftp服务器认证机制5. publickey和password两种方式登录sftp的API调用6. 代码可以如下改造&#xff1a; 需求&#xff1a;做一个通过ssh免密登录的需求&#xff0c;是基于原先密码登录sftp服务器的…

国图公考:公务员面试资格复审需要准备什么?

参加国考面试的考生在资格审核阶段需要准备以下材料&#xff1a; 1、本人身份证、学生证或工作证复印件。 2、公共科目笔试准考证复印件。 3、考试报名登记表。 4、本(专)科、研究生各阶段学历、学位证书(应届毕业生没有可以暂时不提供)。 5、报名资料上填写的各类证书材料…

Express框架介绍—node.js

Express—Node.js 官网传送门(opens new window) 基于 Node.js 平台&#xff0c;快速、开放、极简的 Web 开发框架 Express 是用于快速创建服务器的第三方模块。 Express 初体验 基本使用 安装 Express&#xff1a; npm install express创建服务器&#xff0c;监听客户端请…

【MySQL】学习如何使用DCL进行用户管理

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-JwFD16F1Kh0fle0X {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

面了百度推荐算法岗(实习),这次如愿以偿。。。

最近技术群组织了一次算法面试讨论会&#xff0c;今天分享的是一位拿到 OFFER 的小伙子&#xff0c;如果你想加入我们的讨论群&#xff0c;见文末。 首先感谢组织AI算法岗的交流会&#xff0c;我从中收获很多&#xff0c;今天也有机会分享我的面试的经历。 学校&#xff1a;哈…