概述
最近项目中遇到一个非常奇怪的问题,前端分页列表,传给后端相同的查询参数,但是返回结果不同,可能前几次能够正确的返回结果数据,但是下一次返回数据可能就为空。后端是通过Mybatis来进行SQL执行的,通过配置Mybatis打印执行SQL发现,能够返回结果的是我想要的查询SQL,结果如下:
SELECT * FROM bss_follow_up_user_info m LIMIT 0,20;
生成的异常SQL,结果如下:
SELECT count(0) FROM bss_follow_up_user_info m LIMIT 0 OFFSET 20;
通过分析结果,LIMIT 0 OFFSET 20和LIMIT 0,20这两种写法是完全相反的,OFFSET是跳过20条取0条数据,而LIMIT 0,20是不跳过取20条数据,因为我数据库中只有一条数据,所count(0)为0,所以它不会再继续执行真正的查询SQL。
解决办法:
将XML中的 LIMIT #{page} , #{limit} 改为LIMIT #{limit} OFFSET #{page}
这样的话它解析出来查询数量的SQL就是如下结果:
SELECT count(0) FROM bss_follow_up_user_info m LIMIT 20 OFFSET 0;
这样他就能够正常查询出数量,并继续执行真正的查询SQL。
到此问题解决。
最后
以上就是现实奇迹为你收集整理的Mybatis 相同查询参数但返回结果不同(踩坑记录)的全部内容,希望文章能够帮你解决Mybatis 相同查询参数但返回结果不同(踩坑记录)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复