一次在执行mapper方法的时候,我们使用了orderKey和orderBy这两个字段用于sql自定义排序

例如我要是想对分数进行倒序,那么按道理我应该要传orderKey等于score,orderBy等于desc
但是后面发现报错了,报错显示的sql语句是:
... order by desc
这里就很奇怪了,为什么desc填充进去了,而score去哪了???
后面我们认为是pagehelper的问题,把pageheler那一行给注释了:

但是它还是一如既往地少了score,还是… order by desc
后面发现,确实是pagehelper的问题,当然也算我们自身的问题,对pagehelper的配置不太熟悉
其实罪魁祸首是因为PageHelper的一个配置:
pagehelper.supportMethodsArguments=true
这个supportMethodsArguments配置是mapper入参中有对应的一些参数时会自动重写sql
我这里就是有一个入参是orderBy的入参,就导致被pagehelper重写了,并且pagehelper发现方法传参有pageNum和pageSize,就自动调用pagehelper了。然后pagehelper发现orderBy为desc,所以sql后面就直接变成order by desc了。解决方法就是关闭这个参数:
pagehelper.supportMethodsArguments=false
所以,要么关闭这个配置,或者不要全局配置这个属性,还有,入参不要写pageNum,pageSize,orderBy了!!!!!!!
发表回复