当前位置: 首页 > article >正文

Pagehelper获取total错误

前言

在使用若依框架的pagehelper时,给分页表设置数据的时候前端只收到了分页的那一页的数据,总记录数不符合要求

我想要的效果如下,可以实现分页,和显示总记录数

image-20241013184107499

但是实际情况为

image-20241013184129207

image-20241013184141579

但是我的数据库有11条记录,他这里明显错误了 (这里我给分页后的list做了加工处理并且返回<伏笔>)

一开始我以为是selectList的问题

进行了单元测试

首先我们在配置文件配置mybatis的sql语句显示

image-20241013184356933

 <!-- 打印sql日志 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />

image-20241013184255105

mapper语句没有错误,排除,让我们来看下使用了分页拦截器的sql语句

image-20241013184537863

首先拦截器会进行一个总的查询,select count 0 查总total,方便给前端进行计算有几页

然后他会根据pageSize查询几条放在一页里,这里都是没问题的但是前端请求响应就是 显示total0,泪目

由于之前没有学过pagehelper,直接使用的,所以好奇进去看看具体如何实现的

image-20241013184729250

这个分页拦截由于前面的sql是正常的,应该问题不在这,不过这里的用法就是

PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);

传入页码,页值,然后后面的第一个mapper查询会被拦截,并且封装为一个page对象(重要)仅仅拦截该分页器的后一个select,下下个select视为普通的查询,不封装为page对象

image-20241013185114561

image-20241013185241474

image-20241013185350639

到这里恍然大悟,他将拦截后查询到的list列表封装为page原来在这里发挥作用了,判断该List(多态,方便再方法中传输,形参类型范围扩大)是否为 List 类的实现类型或其接口的实现类 Page类(se里的太久了记不太清了,基础有点差,感兴趣自行查询),是的话就向然后是的话就向下转型,访问子类的getTotal方法

image-20241013185608949

如果不是page对象,那就根据传递进去的List 大小设置total,

原来是我没用分页后的List(page实现了list的类)进行设置分页对象返回,而是用了加工后的普通List

image-20241013190409056

解决方法

image-20241013190443833

分页后的page(list)类直接生成total,然后将加工后的List,setRow进去

image-20241013190559053

game over!,搞了好久mmp,基础不牢,地动山摇啊!!


http://www.kler.cn/a/350311.html

相关文章:

  • flutter跨端UI框架简介
  • Swift语言的数据结构
  • 数据结构之堆排序
  • 可以自己部署的微博 Mastodon
  • systemverilog中的force,release和assign
  • ConvBERT:通过基于跨度的动态卷积改进BERT
  • 谷歌-BERT-第二步:模型使用
  • 构建未来:AIGC模型版本控制的关键策略与工具
  • R语言:ERGM指数随机图模型5:统计显著性评估GOF
  • docker compose入门7—详解build命令
  • 简单谈谈 mysql 的事务两阶段提交
  • C++调试方法(Vscode)(二) ——本地调试(ROS版)
  • qt 安装提示 无法定位程序输入点 systemparametersinfofordpi于动态链接库
  • 简单概述Ton链开发路径
  • 干部任免系统:打造高效透明公正的信息化平台
  • Android14 SystemUI 启动流程(1)
  • 工作日志:vue3各种警告
  • 【Flask】Flask数据库
  • 文件信息类QFileInfo
  • 微信小程序考试系统(lw+演示+源码+运行)
  • c++实现跳表
  • OpenCV-人脸检测
  • 中安 TH-OCR:强大的光学字符识别工具与数据处理优势
  • LeetCode讲解篇之2606. 找到最大开销的子字符串
  • 【Redis】List类型常用命令
  • Linux权限和开发工具(1)