mybatis执行的sql,两个limit

之前检查生产日志的时候发现过一个奇怪的现象,数据库报错,sql语句错了,有两个limit

这种错误不应该出现在生产日志上,有点惊讶,我都怀疑是不是有成员的代码没有经过测试就发布了

但是当我把sql拿下来查找的时候,却发现报错的代码段,sql是正常的,仅有一个limit,拿去数据库跑

结果也是符合预期的

 

这让我想到了pagehelper,这个插件的功能是帮助你分页,它会帮你加入limit

我回到业务层去找相应的代码,也没找到分页助手相关的代码,但我还是怀疑是它有问题。

我翻看它的源码,发现了下面的对象,这个线程常量是它所持有的。

protected static final ThreadLocal<Page> LOCAL_PAGE = new ThreadLocal<Page>();

还有多个线程变量被持有了,用来记录分页相关的信息。

 

pagehelper会在使用完后将它清除

public static void clearPage() {
    LOCAL_PAGE.remove();
}
@Override
public void afterAll() {
    //这个方法即使不分页也会被执行,所以要判断 null
    AbstractHelperDialect delegate = autoDialect.getDelegate();
    if (delegate != null) {
        delegate.afterAll();
        autoDialect.clearDelegate();
    }
    clearPage();
}

afterAll方法是在分页的代码里

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值