Pagehelper分页插件之⾃定义COUNT⽤法
记录最近遇到的⼀个⼩⿇烦~~
1、背景
我这次的需求是实现⽤户在搜索框输⼊关键字进⾏模糊查询。其实挺简单的,就是在原来别⼈的XML代码上做⼀点修改,也就是查询的SQL语句做点改动,就是增加三个字段的模糊匹配。
在改完了之后进⾏⾃测,有两个字段实现了模糊查询的效果,然⽽第三个字段死活匹配不到。这把我整迷糊了,我左看右看写的代码都没有问题,要是有问题的话另外两个字段就不应该匹配得上,那么我想问题应该在别的地⽅。
2、发现问题
分页查询插件我看代码、数据都没问题后,就到处看。于是在我改的SQL语句往下滑(那段语句太长,⼀屏显⽰不完),真让我发现了点东西。原来在下⾯有段查询的SQL。这是段MyBatis中pagehelper插件的⾃定义COUNT⽅法,在我那段SQL执⾏完后会⾃动执⾏这段⾃定义COUNT语句。
⽽且⾃定义COUNT的查询条件⾥模糊匹配的字段正好有我⾃测时能匹配出来的那两个字段,我觉得问题就出在这⾥。
3、解决办法
把⾃定义COUNT⽅法⾥的模糊匹配和我上⾯那段SQL修改的⼀致,就好了。
4、Pagehelper插件⾃定义COUNT⽤法
其实如果没有⾃定义COUNT⽅法,那么这个分页插件会⾃动在你要执⾏的SQL语句外⾯套⼀层,于是得到:SELECT COUNT(*) FROM (你的sql) table_count。
如果你不想⽤它⾃动帮你套⽤的COUNT⽅法,你可以选择⾃⼰定义COUNT⽅法。(注意,2017-08-01版后才⽀持这个操作)
具体⽤法如下:
1、把原来的SQL语句copy⼀份
2、在原来id的结尾加上_COUNT
3、将SELECT 查询的字段名换成COUNT(0)
4、resultType那⾥改成java.lang.Long
5、其他地⽅不⽤动,与原来的SQL语句保持⼀致就⾏
【注意】如果原来的SQL中查询条件有了删改,那么⾃定义COUNT⽅法中的查询条件也要跟着保持⼀致,否则查询出来的结果可能还是原来条件下的结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论