前言
在使用若依框架的pagehelper时,给分页表设置数据的时候前端只收到了分页的那一页的数据,总记录数不符合要求
我想要的效果如下,可以实现分页,和显示总记录数
但是实际情况为
但是我的数据库有11条记录,他这里明显错误了 (这里我给分页后的list做了加工处理并且返回<伏笔>)
一开始我以为是selectList的问题
进行了单元测试
首先我们在配置文件配置mybatis的sql语句显示
<!-- 打印sql日志 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
mapper语句没有错误,排除,让我们来看下使用了分页拦截器的sql语句
首先拦截器会进行一个总的查询,select count 0 查总total,方便给前端进行计算有几页
然后他会根据pageSize查询几条放在一页里,这里都是没问题的但是前端请求响应就是 显示total0,泪目
由于之前没有学过pagehelper,直接使用的,所以好奇进去看看具体如何实现的
这个分页拦截由于前面的sql是正常的,应该问题不在这,不过这里的用法就是
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
传入页码,页值,然后后面的第一个mapper查询会被拦截,并且封装为一个page对象(重要)仅仅拦截该分页器的后一个select,下下个select视为普通的查询,不封装为page对象
到这里恍然大悟,他将拦截后查询到的list列表封装为page原来在这里发挥作用了,判断该List(多态,方便再方法中传输,形参类型范围扩大)是否为 List
类的实现类型或其接口的实现类 Page类(se里的太久了记不太清了,基础有点差,感兴趣自行查询),是的话就向然后是的话就向下转型,访问子类的getTotal方法
如果不是page对象,那就根据传递进去的List 大小设置total,
原来是我没用分页后的List(page实现了list的类)进行设置分页对象返回,而是用了加工后的普通List
解决方法
分页后的page(list)类直接生成total,然后将加工后的List,setRow进去
game over!,搞了好久mmp,基础不牢,地动山摇啊!!