项目背景:需要筛选申请量13000名之后的数据,因此sql需要order by排序
实际效果:使用pageHelper分页组件进行分页筛选,实际结果会去掉sql中的order by!!!!
开启填坑之路:
1、首先开启百度,据说百度可以解决70%的问题;出现的最多的就是sql增加/* keep orderby*/;果断测试,
然而并没有任何用;开始查找pageHelper官方文档;发现4.2.0版本已经解决此问题;详见官方文档更新历史日志
于是查看jar包版本,发现是5.1.8;应该是能完美解决的。
2、第二种方案
pageInfo = PageHelper.startPage(param.getPageNo(), param.getPageSize(), false)
发现打印的sql是select count(*) from table;然并卵!!!
3、完美解决
跟踪源码,发现一种方案肯定是可以的;可能是姿势不对;源码如下
冷静下来仔细看一下sql日志;发现count是没问题;报错出现在下一步的分页查询上;/* keep orderby*/没法正常解析。开启大脑运转,解决如下
将/* keep orderby*/作为一个查询列,即可满足count不去除order by; 也可满足分页查询。
感悟:换一种方式思考问题