Mybatis 相同查询参数但返回结果不同(踩坑记录)

编程入门 行业动态 更新时间:2024-10-08 12:37:14

Mybatis 相同查询<a href=https://www.elefans.com/category/jswz/34/1771441.html style=参数但返回结果不同(踩坑记录)"/>

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 相同查询参数但返回结果不同(踩坑记录)

本文发布于:2024-02-26 04:31:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1701356.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:参数   Mybatis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!