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));}
相关文章:
SpringBoot之整合PageHelper分页插件
SpringBoot之整合PageHelper分页插件 文章目录 SpringBoot之整合PageHelper分页插件1. 引入坐标2. application.yml配置3. 基本使用4. 对多个查询执行分页1. 默认第一个Select语句会执行分页2. 让Pagehelper也能执行多个分页的方法3. 完整案例 详细配置请查看官网或MyBatis分页…...
Android java基础_类的封装
一.面向对象编程的引入 写一个简单的程序输出张三,李四的名字 class Person {String name;String getName() {return "guangdong "name;} };public class Oop {public static void main(String args[]) {Person p1 new Person();p1.name "zhangs…...
Vue-57、Vue技术路由的参数如何传递
query参数传递 1、传递参数 <!-- 跳转路由并携带query参数,to的字符串写法--> <router-link :to"/home/message/detail?id${p.id}&title${p.title}"> {{p.title}} </router-link><!-- 跳转路由…...
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
文章目录 1.1 MySQL 概览:版本、特性和生态系统1.1.1 基础知识1.1.2 重点案例:使用 Python 实现 MySQL 数据的 CRUD 操作1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据 1.2 安…...
Linux 软件管理(YUM RPM)
1 YUM yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次…...
【Makefile语法 05】动静态库编译链接
目录 一、多文件项目源代码 二、静态库编译链接 三、动态库编译链接 一、多文件项目源代码 // include/add.hpp#pragma once int add(int a, int b); // include/sub.hpp#pragma once int sub(int a, int b); // src/add.cpp#include "add.hpp"int add(int a, …...
JS - 处理元素滚动
业务功能中时常有元素滚动的功能,现在就总结一下一些常用的事件。 一、定位滚动元素 做一切滚动操作之前都应该先定位到滚动元素,再做其他操作,如滚动顶部,获取滚动距离、禁止滚动等。 把以下代码复制粘贴到浏览器 Console 面板…...
JavaScript滚动事件
🧑🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ✨ 前言 滚动是网页交互不可或缺的一部分。监听页面和元素的滚动事件,可以帮助…...
4.0 Zookeeper Java 客户端搭建
本教程使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在maven中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。 IntelliJ IDEA 相关介绍:…...
C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
目录 1.使用动态数组(ArrayList): 2.使用 jagged array(不规则数组): 3.使用 List : 4.使用数组复制: 在C#中,数组的长度是固定的,一旦声明和初始化&…...
3.1 Verilog 连续赋值
关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。: 格式如下 assign LHS_target RHS_expression ; LHS(left hand side) 指赋值操作…...
【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求
文章目录 一、Origin 含义二、跨源资源共享:**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests:预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…...
LangChain pdf的读取以及向量数据库的使用
以下使用了3399.pdf, Rockchip RK3399 TRM Part1 import ChatGLM from langchain.chains import LLMChain from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain.chains import Simp…...
VUE学习——事件修饰符
阻止默认事件 <template><a click"onClickHandle" href"https://www.baidu.com">baidu</a><a click.prevent"onClickHandle" href"https://www.baidu.com">baidu</a> </template> <script>…...
开放平台技术架构设计与实现的实战总结
开放平台是企业向外部开发者提供API接口和服务的平台,促进生态系统的建设和业务拓展。本文将介绍开放平台技术架构的设计原则和实现方法,帮助读者了解如何构建一个稳健、安全且易于扩展的开放平台。 1. 什么是开放平台? - 解释了开放平台…...
飞桨自然语言处理框架 paddlenlp的 trainer
飞桨(PaddlePaddle)的NLP库PaddleNLP中的Trainer类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer类简化了训练过程,提供了自动的批处理、模型保存、日志记录等特性。 以下是Trainer类的主要参数…...
SQL世界之命令语句Ⅲ
目录 一、SQL JOIN 1.JOIN 和 Key 2.使用 JOIN 3.不同的 SQL JOIN 二、SQL INNER JOIN 关键字 1.SQL INNER JOIN 关键字 2.INNER JOIN 关键字语法 3.内连接(INNER JOIN)实例 三、SQL LEFT JOIN 关键字 1.SQL LEFT JOIN 关键字 2.LEFT JOIN 关…...
Snoop Version 2 Packet Capture File Format
RFC1761 - Snoop Version 2 Packet Capture File Format, FEBRUARY 1995 本备忘录的状态 本备忘录为互联网社区提供帮助信息。 本备忘录不作为任何类型的互联网标准。 本备忘录的分发不受限制。 Status of this Memo This memo provides information for the Internet communit…...
扩展说明: 指令微调 Llama 2
这篇博客是一篇来自 Meta AI,关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集,有了它,我们则可以使用自己的指令来微调 Llama 2 基础模型。 目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是,模型如…...
VUE 全局设置防重复点击
请求后端防止重复点击,用户点击加入遮罩层,请求完毕关闭遮罩层 我们利用请求拦截器,在用户点击的时候,弹出遮罩层 本文采用i18n国际化 element plus UI,提取你想要的,这里不做简化 完整代码如下…...
从工具到生态:2026年建站系统深度解析与选型指南
在数字化转型已成为企业标配的今天,建立一个专业的官方网站,早已不是“有没有”的问题,而是“好不好用、能否支撑业务”的深层次考量。对于许多企业管理者、运营人员或创业者来说,“建站系统”这个词或许并不陌生,但当…...
PathOfBuilding:流放之路玩家的离线构建神器,打造最强角色规划方案
PathOfBuilding:流放之路玩家的离线构建神器,打造最强角色规划方案 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 你是否曾经在《流放之路》中花…...
OpenClaw+nanobot日程管理:自然语言输入转日历事件
OpenClawnanobot日程管理:自然语言输入转日历事件 1. 为什么需要自然语言日程管理 作为一个经常被各种会议和截止日期追着跑的技术从业者,我一直在寻找更高效的日程管理方式。传统的日历应用需要手动填写时间、地点、标题等字段,操作繁琐且…...
RDF实战指南:从入门到精通
1. RDF基础入门:从概念到实战 第一次接触RDF时,我也被那些专业术语搞得一头雾水。直到把它想象成"资源界的快递单",才突然开窍——就像快递单记录着"谁寄了什么给谁",RDF用主语-谓语-宾语的三元组记录着"…...
FlowState Lab参数调优实战:如何获得理想的模拟精度与速度
FlowState Lab参数调优实战:如何获得理想的模拟精度与速度 1. 为什么参数调优如此重要 在工程仿真领域,我们常常面临一个经典难题:精度与速度的权衡。FlowState Lab作为一款强大的流体动力学仿真工具,其参数设置直接影响着模拟结…...
STM32G474低功耗模式怎么选?一张图看懂睡眠、停止、待机模式区别与实战选型
STM32G474低功耗模式实战选型指南:从睡眠到待机的全场景决策框架 当你面对一块需要连续工作数月的电池供电设备时,每个微安培的电流都变得至关重要。STM32G474系列作为意法半导体针对高性能低功耗场景推出的微控制器,提供了从轻度睡眠到深度休…...
OpenClaw安全加固:Qwen3.5-4B-Claude操作权限精细化控制
OpenClaw安全加固:Qwen3.5-4B-Claude操作权限精细化控制 1. 为什么需要权限控制? 上周我在调试OpenClaw自动化脚本时,差点酿成一场"灾难"——AI助手误将我的工作文档识别为临时文件,准备执行删除操作。幸亏当时设置了…...
300FPS的实时目标跟踪是怎么炼成的?手把手拆解KCF算法里的数学魔法
300FPS实时目标跟踪背后的数学魔法:KCF算法深度解密 在计算机视觉领域,实时目标跟踪一直是个令人着迷又充满挑战的问题。想象一下,当你在观看一场足球比赛时,摄像机需要实时锁定某个球员;或者当自动驾驶汽车行驶时&am…...
实时手机检测-通用部署成本分析:A10/A100/T4显卡性价比实测对比
实时手机检测-通用部署成本分析:A10/A100/T4显卡性价比实测对比 1. 项目背景与需求场景 在现代计算机视觉应用中,实时手机检测是一个具有广泛实用价值的技术方向。从智能监控系统中的打电话行为识别,到零售行业的商品展示分析,再…...
春联生成模型-中文-base行业落地:新能源车企‘碳中和’‘智驾’等科技春联生成
春联生成模型-中文-base行业落地:新能源车企碳中和智驾等科技春联生成 1. 引言:当传统春联遇上现代科技 春节贴春联是千百年来的传统习俗,但传统的"福禄寿喜"已经难以完全表达现代企业的科技内涵。特别是新能源车企,既…...
