2022-06-02
#Java#
关于PageHelper的一个注意点:
今天项目发现了一个bug,一个分页列表查询,页面限制为10条时,总数据量显示为10条,将限制提高到20条时,总数据量变成了11条。排查后发现是因为在获取列表筛选条件的wrapper时(进行分页查询之前),进行了数据库查询,而在这之前调用了PageHelper.startPage()方法,该方法在ThreadLocal中已经设置了分页变量并添加到Mybatis拦截器中还未被消费,导致获取wrapper时做了分页,丢失了部分数据,最终导致分页后的列表总数据缺失。
解决方案:
将获取筛选条件部分的逻辑移动到PageHelper.startPage方法前即可
注意:
PageHelper的分页是基于ThreadLocal实现的,而内部使用的Page变量实现了Closeable接口,重写的close()方法就调用了PageHelper.clear()方法,无需在完成分页查询后手动调用,可以在可能执行的分页查询取消后调用来手动清除分页变量。
9
0
分享
操作
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
