⭐最新版!SpringBoot正确集成PageHelper姿势,不再被误导!

GGBond🔈

CSDN的朋友们大家好哇,我是新来的Java练习生 CodeCodeBond!

什么是PageHelper?

这里给不知道的人儿说明一下~~ 知道的xdm可以跳过了!

PageHelper顾名思义是一个 页面 帮手。也就是分页查询的一个好用的工具。他是集成Mybatis开发的时候才能使用的,也就是说他是基于Mybatis的(拦截Mybatis的Excutor,详细可以自行冲浪)大家如果有过写分页查询的需求的时候,其实就会感受过写分页查询sql时候的不便性。

  • 要思考sql分页,条数的拓展性,如何优化。
  • 分页逻辑看似简单,但实际操作中涉及多个参数(页码、每页条数、总记录数等),处理不当容易导致分页错误,如计算偏移量出错、页码越界等问题。
  • 维护成本高,且多人开发时每个人分页逻辑不同很难统一。

但是! 使用PageHelper这个工具帮我们解决了以上问题,(当然生产中得好好掂量这个开源工具的兼容稳定性了)当使用PageHelper,你的分页逻辑代码将会变成以下如此简单 👇

@RestController
public class IssueController {
    @Resource
    private 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项目究竟要导入什么依赖

网上最常见的就是这样导依赖了
image.png
虽然版本兼容的话,也能跑,但是这不是乱导一通吗。

来看看右边的Maven大哥怎么说:
image.png

不懂英文没关系,跟着我念 Omi踢 for 丢普立kei te。

image.png

其实导入pagehelper-spring-boot-starter的时候,就已经包含了这些依赖项了。所以我们的SpringBoot项目也只需要导入这个依赖即可!
对于一个轻度代码洁癖的CRUD boy,我选择优雅导入依赖~删除冗余


在SpringBoot项目中究竟如何配置

SpringBoot中是可以直接在yml配置文件配置PageHelper的,简单方便可读性高

pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql
  pageSizeZero: true

我们只需要在你对应的application.yml文件配你想的配置就可以啦!
这也是SpringBoot项目特点之一: 大大简化了配置!

配置成功后,为什么不成功

来,我们开始启动,原…Application,启动!!

image.png

噢!原来启动后有一个PageHelper的Logo啊! 你看看你有没有? [doge]

然后我们调用一下我们刚刚写好的接口,试一下哈
嘶,调用是成功了,但是为什么是select * 实际sql语句呢,我想要PageHelper给我家的LIMIT 放去哪里了??!

坑2: 这里不得不说到一个最新的版本兼容问题,这个问题当时花了我很久的时间去找到。
来看看官方文档:

GitHub - pagehelper/pagehelper-spring-boot: pagehelper-spring-boot

文档中明确说到:

image.png
相信很多人学习生活中已经和我一样,用上了SpringBoot 3.x版本了,但是呢,PageHelper插件在v1.4.6 + 才开始兼容 SpringBoot 3.x版本 !

所以这是个版本兼容问题的坑, 朋友们注意了

image.png
怎么报500了!!!(光速跑到后厨)
让我们看一下报错日志

image.png
这句话的意思是 它的LIMIT给我加到了";"的后面,也就是我的sql语句后面

image.png
我们把这个 “;” 删除,就能正常的分页查询了。

坑3: sql语句的后面不要习惯性加上你的";",会影响PageHelper加上的LIMIT的

Once again

image.png
可以看到终于实现我们正常的分页查询了!!!


ps: 这个响应体是我自己写的一个类返回的,你也可以看看PageHelper返回的PageInfo是什么样子的,然后根据需求处理数据。

最后的最后

这些都是我以前总结的一些笔记,我会慢慢把他们发到CSDN这个平台,希望可以帮助到大家!~ 我是CodeCodeBond,关注我,带你游玩后端开发~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3前后端开发:响应式对象不能直接成为前后端数据传输的对象

如图所示&#xff1a;前端控制台打印显示数据是没问题的&#xff0c;后端却显示没有接收到相应数据&#xff0c;但是后端的确接收到了一组空数据 直接说原因&#xff1a;这种情况唯一的原因是没有按正确格式传递参数。每个人写错的格式各有不同&#xff0c;我只是说明一下我在…

绝望中迎来曙光,阿里大模型算法岗 Offer 突然来了!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

3 话题通信-API的使用

目录 (一)常用API 1 初始化 1.1 初始化函数(c++) (1)函数一般表达式: (2)使用 (3)举例(c++) 案例1:argc与argv使用 要求 cmakelists.txt配置 代码 效果图 案例2:options的使用 要求 cmakelists.txt配置 代码 效果图 1.2 初始化函数(python) (…

label studio数据标注平台的自动化标注使用

&#xff08;作者&#xff1a;陈玓玏&#xff09; 开源项目&#xff0c;欢迎star哦&#xff0c;https://github.com/tencentmusic/cube-studio 做图文音项目过程中&#xff0c;我们通常会需要进行数据标注。label studio是一个比较好上手的标注平台&#xff0c;可以直接搜…

【Unity小技巧】记一个RenderTexture无法正确输出Camera视图下的Depth渲染的问题

问题 这个问题出现在使用URP管线时&#xff0c;我试图用Shader实现血条的制作&#xff0c;并用RenderTexture将视图渲染到RawImage上。 但是渲染结果出现了问题&#xff1a; 可以看到液体边缘的渲染出现了错误&#xff0c;原因不明 在StackFlow上查找后找到了类似的问题&…

轻松掌握:工科生如何高效阅读国际期刊和撰写论文(上)

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

基于 MHA 的 MySQL 高可用主从架构

Author&#xff1a;Arsen Date&#xff1a;2024/06/25 目录 一、前言1.1 概述1.2 组件1.3 流程 二、环境三、部署3.1 基本环境3.1.1 hosts 配置3.1.2 配置 SSH 免密访问 3.2 MySQL 主从3.2.1 基础环境配置3.2.2 启动 MySQL 实例3.2.3 配置 MySQL 主从3.2.4 MySQL 主从同步验证 …

耐盐雾抗腐蚀航空插头插座

航空插头插座概述 耐盐雾720小时航空插头插座是一种专门设计用于抵抗盐雾侵蚀的航空用连接器&#xff0c;广泛应用于航空航天、海洋工程和其他需要高防护级别的领域。这类插头插座不仅具备一般的电气连接功能&#xff0c;还能在含盐较高的环境中长时间工作而不被腐蚀&#xff…

Linux 标准IO的fopen和fclose

getchar(),putchar() ‐‐‐‐ 一个字符 gets(buf),puts(buf) ‐‐‐‐ 一串字符 scanf(),printf() ‐‐‐‐ 一个字符&#xff0c;一串字符都可以 fopen函数的形式 FILE * fopen(constchar *path , cost char *mode) /* * description : 打开一个文件 * param ‐ path…

Prometheus:开源监控解决方案的力量

前言 在当今高度数字化和云原生应用的时代&#xff0c;监控系统是确保系统稳定性和性能的关键组成部分。而 Prometheus 作为一种开源的监控解决方案&#xff0c;正在成为越来越多企业和开发者的首选。本文将深入探讨 Prometheus 的特性、优势以及如何利用它来构建强大的监控系…

圈复杂度.

圈复杂度是衡量代码的重要标准 配置&#xff1a; eslint里面&#xff1a;rules&#xff1a;complexity&#xff1a;[error,10]

第28课 绘制原理图——绘制导线

概述 放置完元器件之后&#xff0c;接着就要用导线将元器件的管脚一个一个连起来了。 绘制导线的方法 点击快速工具条上的“线”命令&#xff0c;进入绘制导线的过程。 点击选择某个管脚或电源端口&#xff0c;作为导线的起始端。 再点击选择另一个管脚或电源端口&#xff0c…

为什么永远不会有语言取代 C/C++?

每个 CPU 都带有一种称为 ISA&#xff08;指令集架构&#xff09;汇编的电路语言。ISA 程序集是一种硬件语言&#xff0c;由基本数据操作、数学计算和结构化编程&#xff08;即 jmp&#xff09;的操作组成。但是&#xff0c;为每个计算需求编写汇编代码无疑是耗时的&#xff0c…

(六)使用统计学方法进行变量有效性测试(43道选择题)

本文整理了使用统计学方法进行变量有效性测试相关的练习题&#xff0c;共43道&#xff0c;适用于想巩固理论基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;CDA二级-第7章&#xff09;。 1&#xff09; 2&#xff09; 3&#xff09; 4&#xff09; 5&#xff09;…

pinia.js报patchToApply.hasOwnProperty is not a function

vue3 ts pinia.js 先看报错> patchToApply.hasOwnProperty is not a function 错误信息&#xff1a; pinia.js?v91704efd:913 Uncaught (in promise) TypeError: patchToApply.hasOwnProperty is not a functionat mergeReactiveObjects (pinia.js?v91704efd:913:23)…

YOLOv5改进(七)--改进损失函数EIoU、Alpha-IoU、SIoU、Focal-EIOU

文章目录 1、前言2、损失函数代码实现2.1、修改metrics.py2.2、修改loss.py 3、替换EIOU4、替换SIoU5、替换Alpha-IoU6、替换Focal-EIOU7、目标检测系列文章 1、前言 YOLOv5默认使用损失函数为CIoU&#xff0c;本文主要针对损失函数进行修改&#xff0c;主要将bbox_iou函数进行…

昇思25天学习打卡营第2天|onereal》

今天学习内容是了解华为昇思平台。虽然打了卡&#xff0c;但是我的jupyter里面并没有播放按钮&#xff0c;所以还是无法运行代码。反映给昇思吴彦祖小哥了&#xff0c;他说需要专家帮我解决。 我还是要自我表扬一下&#xff0c;不懂就问&#xff0c;切莫不懂装懂&#xff0c;那…

充电宝哪个牌子最好最耐用?耐用西圣、罗马仕、绿联充电宝实测

目前充电宝是我们出行必备的“能量伴侣”。然而&#xff0c;市面上充电宝品牌繁多&#xff0c;让人眼花缭乱&#xff0c;究竟哪个牌子最好最耐用呢&#xff1f;为了给大家找到答案&#xff0c;我们精心挑选了西圣、罗马仕和绿联这三个备受关注的品牌&#xff0c;并对它们的充电…

clion调试opencv程序时,查看内存中图像的方法

很久之前在windows上使用 visual studio中 Image Watch插件查看内存中图像感觉很方便&#xff0c;后来转到liunx上开发后&#xff0c;在clion上一直没有找到对应的插件。之前看到过qtOpenImageDebugger好像有类似功能&#xff0c;vs code好像也可以&#xff0c;但是没有配置。 …

文华6幅图指标公式大全-多空精准买卖点提示指标源码

文华6幅图指标公式大全-多空精准买卖点提示指标源码&#xff1a; HH: HHV ( HIGH ,1)/5 HHV ( HIGH ,2)/5 HHV ( HIGH ,2)/5 HHV ( HIGH ,5)/5 HHV ( HIGH ,8)/5; LL: LLV ( LOW ,1)/5 LLV ( LOW ,2)/5 LLV ( LOW ,2)/5 LLV ( LOW ,5)/5 LLV ( LOW ,8)/5; H1: IFELSE ( H &l…