美文网首页
Mybatis 使用PageHelper遇到的坑

Mybatis 使用PageHelper遇到的坑

作者: 至爱雅鸿_e631 | 来源:发表于2019-09-29 15:33 被阅读0次

背景

做项目时前端反应列表查询返回的总行数不对,列表查询使用的是PageHelper组件,实现完全按照文档而来。

排查

搜索了很多实现文档,对比发现实现代码与文档无出入,但总数就是不对,只能从根本入手,查看官方文档,看到如下内容:

在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 
静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。

可以看出PageHelper方法后面必须是直接的查询语句否则分页查询的帽子就扣错了
排查代码

...省略代码...
PageHelper.startPage(personSelectRequest.getPage(), personSelectRequest.getRows());
List<User> userList = personService.select(request);
PageInfo<User> pageInfo = new PageInfo<>(userList,personSelectRequest.getRows());
...省略代码...

PageHelper后紧跟的是查询语句,没有问题,崩溃中~~一度想改写接口

举一反三,PageHelper后面必须是查询语句,那么查询语句后面是不是必须是pageInfo的转化?

查看select方法内部是否有处理

//有一个列表解密操作
ListDecryptHelper.decryptUserList(personDao.selectByConditions(personDataRequest));

果然select方法内部对myBatis的查询结果进行了处理,果断去掉一切正常,后将解密操作放在pageinfo后面

总结

在使用PageHelper时,设置startPage、查询数据、转化为pageInfo必须是连贯的三步,中间不能有任何其他处理否则会导致结果不可预期。

后记

之前没用过pageHelper ,感觉这玩意不好用,看过文档后真香~~
方便,简单设置即可使用

参考

PageHelper github地址&文档

相关文章

网友评论

      本文标题:Mybatis 使用PageHelper遇到的坑

      本文链接:https://www.haomeiwen.com/subject/vnhfuctx.html