PageHelper分页合理化reasonable源码分析
Posted 百里东君~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PageHelper分页合理化reasonable源码分析相关的知识,希望对你有一定的参考价值。
本文源码分析PageHelper插件在手动配置了分页合理化参数(reasonable=true)之后,当查询页码超出总页数,拦截器是如何实现仍然返回最后一页的数据。
PageHelper利用本地线程存储当前线程的分页参数信息
private static final ThreadLocal LOCAL_PAGE = new ThreadLocal();
1、当我们使用PageHelper.startPage(pageNum, pageSize)时,会获取本地线程LOCAL_PAGE,并赋值Page对象页数页码信息
2、当拦截器执行PageHelper类的 intercept方法,
因为自定义配置类中,这里初始化了一个配置参数(分页合理化) reasonable = true(默认false)
会导致当我们取最后一页之后的页码,代码仍然会赋值成最后一页的数据,返回最后一页的数据。
源码追溯:
**踩坑分享:**因此在for循环中使用PageHelper要格外小心,避免因为分页合理化而出现死程序循环
以上是关于PageHelper分页合理化reasonable源码分析的主要内容,如果未能解决你的问题,请参考以下文章
springboot + mybatis-pagehelper 参数查询不分页的bug。。。