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源码分析的主要内容,如果未能解决你的问题,请参考以下文章

PageHelper分页合理化reasonable源码分析

springboot + mybatis-pagehelper 参数查询不分页的bug。。。

pagehelper分页查询的一个坑,明明下一页没有数据了却还是返回了数据

Mybatis分页插件PageHelper的使用-

pagehelper分页原理浅析

clickhouse pageHelper分页