问题描述:
用mybatis进行mysql查询list时,没有使用PageHepler.startPage方法,打印出的sql自动查询了count,并且进行了limit,其中入参中包含pageNum和pageSize参数,切都不为null
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CNkZTZ5czMkZTNmNGM2gTZ2UjYjFmYxYTN0EmZxQWMj9CX4EzLclDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL1M3Lc9CX6MHc0RHaiojIsJye.png)
携带了limit
原因:supourt-methods-arguments设置为true了,并且入参包含pageNum、pageSzie两个参数且都不为空
解决方法(从源码分析中得到的方法):
- 将pageNum或pagSize参数中的一个命名为其他值
- 将pageNum或pageSize参数中的一个设置为null
- 将supourt-methods-arguments设置为false(默认为false)
源码排查原因:
1、通过pageHelper的自动配置,查出pageHelper的启动文件
2、通过启动文件找到pageHelper对应的拦截器
3、通过断点调试,查看pageHelper的处理逻辑
PageObjectUtil
通过上面的两端源码我们看出如果设置了supportMethodsArguments值为true,他会去获取参数中是否有pageNum和pageSize,如果两者都不为空,会返回一个new Page (这和PageHelper.startPage最后调用异曲同工)
小收获
愿你眼中有光芒,活成你想要的模样