解决ThreadLocal在线程池中被重复使用的问题

接口出现异常SQL语句追加LIMIT分页,原因是使用PageHelper.startPage在线程池中导致ThreadLocal数据残留,影响后续请求。解决方案是在请求结束时清除ThreadLocal。
摘要由CSDN通过智能技术生成
今天测试告诉我一个接口时不时的会报错,然后我去服务器检索了日志信息,发现这个接口偶尔会在SQL语句后面追加LIMIT 进行分页,但是我这个接口只是查询单条数据的,并且也没有设置分页.
这个就让人感到一丝丝尴尬了.
经过不断梳理,发现这个这个接口里面一共有两次数据库交互,第一次是查询单条数据,但是第二次是一个分页查询.并且使用的是PageHelper.startPage进行分页.
那么不出意外的话就是第二个查询的分页影响了第一个查询了.

在这里插入图片描述

在这里插入图片描述

什么会出现上面的情况呢,明明是第二个查询设置了PageHelper.startPage,但是为什么会影响第一个查询呢. 如果看过PageHelper.startPage源码的小伙伴就会知道PageHelper.startPage的底层是使用

ThreadLocal进行实现的,分页参数只会在当前的线程有效. 这么说好像没啥问题对吧.但是我们的web服务器tomcat其实是使用的线程池去接收浏览器的请求的,那么在线程池中线程是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿杰同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值