Mybatis莫名自动分页?PageHelper自动分页(踩坑)
问题描述:
用mybatis进行mysql查询list时,没有使用PageHepler.startPage方法,打印出的sql自动查询了count,并且进行了limit,其中入参中包含pageNum和pageSize参数,切都不为null
携带了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最后调用异曲同工)
小收获
通过上面的源码可以看出,orderBy默认false,当有参数名字为orderBy时,会自动设置排序(意外收获)
愿你眼中有光芒,活成你想要的模样
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-09-18 JDK1.8 中的双冒号::是什么语法?