美文网首页
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