pagehelper使用有误导致sql多了一个limit
阅读原文时间:2023年07月09日阅读:2

  接口测试报告中发现时不时有一个接口报错,但再跑一次又没有这个报错了。报错信息是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