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

posted on 2021-07-02 10:27  九月旧约  阅读(3013)  评论(0编辑  收藏  举报

导航