MyBatis:使用Mybatis执行sql后多出limit ?和select count(0)的问题


1.在使用MyBatis执行SQL(包含分页功能)的时候,明明SQL里没写LIMIT,执行时却多出了一个LiMIT。

2.在使用MyBatis执行SQL的时候,明明SQL里写的是SELECT * ...,执行时却执行了SELECT count(0) ...,后文中对此Bug进行说明。

解决方案:分页查询数据之前先清理分页缓存。

PageHelper.clearPage(); 
//clearPage()方法中调用的是:
LOCAL_PAGE.remove(); //删除此线程本地的当前线程的值变量。
public void remove() {
    ThreadLocalMap m = getMap(Thread.currentThread());
    if (m != null)
        m.remove(this);
}
             

只要执行一次清楚缓存就行。后面要使用分页查询数据,注释掉此方法。


参考博客:https://blog.csdn.net/qq_43265673/article/details/107673422


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM