mybatis-plus查询无数据问题

由于本周工作原因,spring系列放到下周写,今天分享一个实际开发中出现的问题和解决办法。

先说说背景。

事情是这样的,我们上线了一个缴费系统,但是一到高峰缴费,就会出现通过手机号查询不到个人的缴费信息。只要重启,能好那么一下,然后隔一段时间,就又不行了。而且这块还发现一点奇怪的规律,比如查询某个号码的,发现是点了9次之后,才会出现,之后便会一直这样。

使用的技术是springboot+spring mvc+mybatis-plus,数据库是sqlserver(查的别人的库)

ps:由于事情过去一段时间了,当时忘了截图,这里可能是纯文字描述,请见谅。

然后最开始根据经验做了几个判断:

1、是不是mybatis-plus的bug,连sqlserver有问题?

2、是不是mybatis-plus的缓存问题,从缓存中取数据取不到?

3、是不是并发太大,导致数据库拒绝连接,或者连接超时了?

根据以上3点开始排查, 

1、debug mybatis源码,发现没问题,pass。

2、将缓存设置去掉,不启用缓存,发现还会出问题,不是这个问题

3、如果是超时,应该是有日志,但是日志是没有的,也不是这个问题,而且放到本地,调高并发量测试,也是没有问题的。

来来回回搞了好久,都不行。最后没办法,把日志级别调到trace,开启打印sql语句,看看是不是sql语句搞的鬼,果不其然,发现一些问题。

sql语句最开始是都正常的,但是当查询不到数据的时候,sql语句最后被拼接上了分页,而且查的10行到20行的数据(为什么刚好查询的是10行到20行?最开始我提到了”比如查询某个号码的,发现是点了9次之后,才会出现,之后便会一直这样“),所以查不到。但是为啥点击第2-8次的时候,不出现,我也没搞明白,有清楚的还请告知一下。

几经周折发现,mybatis配置了这么一项:

《mybatis-plus查询无数据问题》

注意画红框地方,这个就是打开localpage模式。

supportMethodsArguments 这个值默认是false,被设置了true,因此mybatis会自动拼接自动分页。

把这个改成false或者直接去掉,就好了。完美解决。

当然啦,大家一般都不会设置这个参数,这里只是给大家做一个参考。

 

 

 

    原文作者:阳光coding
    原文地址: https://blog.csdn.net/zhang512399256/article/details/115250877
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞