自学内容网 自学内容网

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,基础不牢,地动山摇啊!!


原文地址:https://blog.csdn.net/Zwwxd666/article/details/142902440

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!