起因:
用PageHelper分页插件写页面查询时发现一个问题
此时我想查询任意页的任意一条数据只有当前页为1时才能做到
而在后面的页数时,是无法查询到前面页数的数据的
图:
分析:
检索分析PageHelper的结果都是手撕源码 大概就是方法重载 多线程 反射 拦截之类的此时的我水平有限,看起来不是很容易。
而且我只是想知道PageHelper对我的sql语句 做了什么就够了,所以把分析结果分享给和我一样目的的人。
使用PageHelper给参数的格式
PageHelper.startPage(currentPage,pageSize);
试试在第4页查第1页的数据,PageSize为10
于是我们知道了PageHelper只是在sql语句后面加了 limit ?,?
(第一个?为起始索引,第二个为要查多少条。破案)
此时我们有70条数据,每页10条,currentPage=4,pageSize=10时,?的值分别为30和10。
总结一下写个小公式:
原sql+limit+(currentPage-1)*pageSize=PageHelper.startPage
(currentPage,pageSize)+执行sql
解决办法:
每次查询前把currentPage改为1。