pagehelper使用有误导致sql多了一个limit

  接口测试报告中发现时不时有一个接口报错,但再跑一次又没有这个报错了。报错信息是sql异常,sql中有两个limit。查看后台代码和XXmapper.xml,发现确实只有一个limit。一开始开发以为是数据的问题或者是jmeter的问题导致。。。赶着提测就先没理了。

  我的第一想法是pagehelper的问题,后面通过查找网上资料,发现pagehelper使用startPage()把分页标识存放在threadlocal,若当前线程在未调用mybatis查询前发生异常了(pagehelper会拦截mybatis的sql,添加分页语句,sql操作完毕后删除threadlocal中的分页标识),另一个的请求会复用该线程,但threadlocal仍存在分页标识,故执行sql语句时会多了limit。

  推荐修改:把startPage()语句与mapper语句连着写。

原文连接 https://www.jianshu.com/p/c1851ee14e4c

posted @ 2021-03-08 16:15  melonHJY  阅读(598)  评论(0)    收藏  举报