⭐最新版!SpringBoot正确集成PageHelper姿势,不再被误导!
GGBond🔈
CSDN的朋友们大家好哇,我是新来的Java练习生 CodeCodeBond!
什么是PageHelper?
这里给不知道的人儿说明一下~~ 知道的xdm可以跳过了!
PageHelper顾名思义是一个 页面 帮手。也就是分页查询的一个好用的工具。他是集成Mybatis开发的时候才能使用的,也就是说他是基于Mybatis的(拦截Mybatis的Excutor,详细可以自行冲浪)大家如果有过写分页查询的需求的时候,其实就会感受过写分页查询sql时候的不便性。
- 要思考sql分页,条数的拓展性,如何优化。
- 分页逻辑看似简单,但实际操作中涉及多个参数(页码、每页条数、总记录数等),处理不当容易导致分页错误,如计算偏移量出错、页码越界等问题。
- 维护成本高,且多人开发时每个人分页逻辑不同很难统一。
但是! 使用PageHelper这个工具帮我们解决了以上问题,(当然生产中得好好掂量这个开源工具的兼容稳定性了)当使用PageHelper,你的分页逻辑代码将会变成以下如此简单 👇
@RestController
public class IssueController {@Resourceprivate IssueService issueService;@GetMapping("/get/user/issues")public R<IssuesPageVo> getIssues(@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "10") Integer pageSize){return R.success(issueService.getIssues(pageNum, pageSize));}
}
其中的issueService其实实际你写的sql就只是一个select * 。 然后把页数、页条数放进去,PageHelper就会自动帮你分好页了!!这样子的接口,前端的coding自由度更高,可以随意做拉取加载等等节流操作,再也不怕前端来找茬了。(不是
SpringBoot集成PageHelper正确姿势
开始学习这个插件的时候,可能是网上课程较老的原因,网路上搜索到的各种配置操作基本都是坑,导致我看别人博客学习踩了很多坑,现在我将它们分享出来,希望学习的朋友们及时从坑里爬出来。
坑1: 在风雨交加的一天,CodeCodeBond在学习PageHelper时候,开始谷歌SpringBoot配置PageHelper,看了看文章标题也没错。进去发现它教我在一个SSM项目中写一个配置类,甚至还有文章Maven导入的依赖也是高度重复!真是让人头晕。
在SpringBoot项目究竟要导入什么依赖
网上最常见的就是这样导依赖了
虽然版本兼容的话,也能跑,但是这不是乱导一通吗。
来看看右边的Maven大哥怎么说:
不懂英文没关系,跟着我念 Omi踢 for 丢普立kei te。
其实导入pagehelper-spring-boot-starter的时候,就已经包含了这些依赖项了。所以我们的SpringBoot项目也只需要导入这个依赖即可!
对于一个轻度代码洁癖的CRUD boy,我选择优雅导入依赖~删除冗余
在SpringBoot项目中究竟如何配置
SpringBoot中是可以直接在yml配置文件配置PageHelper的,简单方便可读性高
pagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSqlpageSizeZero: true
我们只需要在你对应的application.yml文件配你想的配置就可以啦!
这也是SpringBoot项目特点之一: 大大简化了配置!
配置成功后,为什么不成功
来,我们开始启动,原…Application,启动!!
噢!原来启动后有一个PageHelper的Logo啊! 你看看你有没有? [doge]
然后我们调用一下我们刚刚写好的接口,试一下哈
嘶,调用是成功了,但是为什么是select * 实际sql语句呢,我想要PageHelper给我家的LIMIT 放去哪里了??!
坑2: 这里不得不说到一个最新的版本兼容问题,这个问题当时花了我很久的时间去找到。
来看看官方文档:
GitHub - pagehelper/pagehelper-spring-boot: pagehelper-spring-boot
文档中明确说到:
相信很多人学习生活中已经和我一样,用上了SpringBoot 3.x版本了,但是呢,PageHelper插件在v1.4.6 + 才开始兼容 SpringBoot 3.x版本 !
所以这是个版本兼容问题的坑, 朋友们注意了
怎么报500了!!!(光速跑到后厨)
让我们看一下报错日志
这句话的意思是 它的LIMIT给我加到了";"的后面,也就是我的sql语句后面
我们把这个 “;” 删除,就能正常的分页查询了。
坑3: sql语句的后面不要习惯性加上你的";",会影响PageHelper加上的LIMIT的
Once again
可以看到终于实现我们正常的分页查询了!!!
ps: 这个响应体是我自己写的一个类返回的,你也可以看看PageHelper返回的PageInfo是什么样子的,然后根据需求处理数据。
最后的最后
这些都是我以前总结的一些笔记,我会慢慢把他们发到CSDN这个平台,希望可以帮助到大家!~ 我是CodeCodeBond,关注我,带你游玩后端开发~
相关文章:

⭐最新版!SpringBoot正确集成PageHelper姿势,不再被误导!
GGBond🔈 CSDN的朋友们大家好哇,我是新来的Java练习生 CodeCodeBond! 什么是PageHelper? 这里给不知道的人儿说明一下~~ 知道的xdm可以跳过了! PageHelper顾名思义是一个 页面 帮手。也就是分页查询的一个好用的工具…...

解决:Xshell通过SSH协议连接Ubuntu服务器报“服务器发送了一个意外的数据包,received:3,expected:20”
下图所示: 日志也基本看不出来问题在哪,只是说断开了连接大概是验证失败。有幸在某论坛评论区找到了原因,是因为我的xshell版本太低了而服务器的ssh版本太高,高版本的ssh默认屏蔽了一部分不太安全的算法导致建立连接的时候验证失败…...

[学习笔记] 禹神:一小时快速上手Electron笔记,附代码
课程地址 禹神:一小时快速上手Electron,前端Electron开发教程_哔哩哔哩_bilibili 笔记地址 https://github.com/sui5yue6/my-electron-app 进程通信 桌面软件 跨平台的桌面应用程序 chromium nodejs native api 流程模型 main主进程 .js文件 node…...
Java stream操作流常用的方式
在Java中,Stream操作流是Java 8新引入的一个功能,它提供了很多强大的操作,方便我们进行集合的处理和操作。常用的Stream操作方式有: 1.过滤:使用filter()方法可以过滤掉集合中不符合条件的元素。 2.映射:…...

【C#】图形图像编程
实验目标和要求: 掌握C#图形绘制基本概念;掌握C#字体处理;能进行C#图形图像综合设计。 运行效果如下所示: 1.功能说明与核心代码 使用panel为画板,完成以下设计内容: 使用pen绘制基础图形;使…...

埃特巴什码加解密小程序
埃特巴什码加解密小程序 这几天在看CTF相关的课程,涉及到古典密码学和近代密码学还有现代密码学。 简单替换密码 Atbash Cipher 埃特巴什码(Atbash Cipher)其实可以视为下面要介绍的简单替换密码的特例,它使用字母表中的最后 一个字母代表第一个字母…...

Golang笔记:使用serial包进行串口通讯
文章目录 目的使用入门总结 目的 串口是非常常用的一种电脑与设备交互的接口。这篇文章将介绍golang中相关功能的使用。 本文使用的包为 :go.bug.st/serial https://pkg.go.dev/go.bug.st/serial https://github.com/bugst/go-serial 另外还有一些常见的包如&…...
EasyExcel 导出批注信息
1. 批注信息 package com.xxx.demo;import lombok.Getter;/*** This class represents the comment information associated with a specific cell in an Excel sheet.* The columnIndex field specifies the column number of the cell, and the comment field stores the te…...

HttpServletRequest・getContentLeng・getContentType区别
getContentLength(): 获取客户端发送到服务器的HTTP请求主体内容的字节数(长度) 如果请求没有正文内容(如GET),或者请求头中没有包含Content-Length字段,则该方法返回 -1 getContentType()&am…...

Matlab|【防骗帖】考虑时空相关性的风电功率预测误差建模与分析
目录 1 主要内容 2 部分程序 3 下载链接 1 主要内容 这个程序《考虑时空相关性的风电功率预测误差建模与分析》画的图片非常漂亮,和原文献基本一致,但是实际上内容并未实现出来,主要就是利用现有的风电预测的数据和结果做了相关的图&#…...
【Android面试八股文】说一说ListView卡顿的原因以及相对应的优化策略
文章目录 一、ListView卡顿的原因1.1 Item没有复用1.2 布局的层级过深1.3 数据绑定逻辑过多1.4 滑动时不必要的图片刷新1.5 频繁的notifyDataSetChanged二、优化策略2.1 使用 ViewHolder 进行视图复用2.2 优化布局结构2.3 优化数据绑定逻辑过多2.4 图片加载优化2.5 避免频繁调用…...

Kotlin 中的内联函数
1 inline 内联函数:消除 Lambda 带来的运行时开销。 举例来说: fun main() {val num1 100val num2 80val result num1AndNum2(num1, num2) { n1, n2 ->n1 n2} }fun num1AndNum2(num1: Int, num2: Int, operation: (Int, Int) -> Int): Int …...
KALI LINUX 开启ssh免登录服务及固定ip及
SSH以进行远程登录 在Kali Linux中启用SSH以进行远程登录,请按照以下步骤操作: 安装SSH服务:sudo apt update sudo apt install openssh-server 已安装可忽略 sudo systemctl start ssh 启动SSH服务 sudo systemctl enable ssh 确保SSH服务设置为开机启动: (可选)如…...

亮数据,一款新的低代码爬虫利器!
在当今数据驱动型时代,数据采集和分析能力算是个人和企业的核心竞争力。然而,手动采集数据耗时费力且效率低下,而且容易被网站封禁。 我之前使用过一个爬虫工具,亮数据(Bright Data) ,是一款低…...

配置OSPF认证(华为)
#交换设备 配置OSPF认证-基于华为路由器 OSPF(开放最短路径优先)是一种内部网关协议(IGP),用于在单一自治系统(AS)内决策路由。OSPF认证功能是路由器中的一项安全措施,它的主要用途…...

关于ip地址的网页无法访问navigator的gpu、媒体、蓝牙等设备的解决方法
在使用threejs的WebGPURenderer渲染器时,发现localhost以及127.0.0.1才能访问到navigator.gpu,直接使用ip会变成undefined,原因是为了用户的隐私安全,只能在安全的上下文中使用,非安全的上下文就会是undefined,安全上下…...
深入理解外观模式(Facade Pattern)及其实际应用
引言 在软件开发中,复杂的系统往往由多个子系统组成,这些子系统之间的交互可能非常复杂。外观模式(Facade Pattern)通过为这些子系统提供一个统一的接口,简化了它们的交互。本篇文章将详细介绍外观模式的概念、应用场…...

为什么永远不会有语言取代 C/C++?
每个 CPU 都带有一种称为 ISA(指令集架构)汇编的电路语言。ISA 程序集是一种硬件语言,由基本数据操作、数学计算和结构化编程(即 jmp)的操作组成。但是,为每个计算需求编写汇编代码无疑是耗时的,…...

Python 全栈体系【四阶】(六十一)
第五章 深度学习 十三、自然语言处理(NLP) 5. NLP应用 5.2 文本情感分析 目标:利用训练数据集,对模型训练,从而实现对中文评论语句情感分析。情绪分为正面、负面两种 数据集:中文关于酒店的评论&#…...

工控必备C#
微软的C# 语言? QT 熟了以后,Qt 更方便些 方法Signal Slot 感觉上一样 现在更推荐PyQt 来构建,底层还是Qt C 的那些库,Qt 的开源协议有点狗...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...

相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...