我是靠谱客的博主 现实奇迹,最近开发中收集的这篇文章主要介绍Mybatis 相同查询参数但返回结果不同(踩坑记录),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近项目中遇到一个非常奇怪的问题,前端分页列表,传给后端相同的查询参数,但是返回结果不同,可能前几次能够正确的返回结果数据,但是下一次返回数据可能就为空。后端是通过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 相同查询参数但返回结果不同(踩坑记录)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部