Pagehelper分页插件之自定义COUNT用法

在使用MyBatis的PageHelper插件进行模糊查询时,遇到一个奇怪的问题:一个字段无法匹配。经过排查发现,原来是PageHelper的自定义COUNT方法中的查询条件未与主查询同步导致。修复方法是使自定义COUNT方法的模糊匹配条件与主查询保持一致,从而解决了问题。
摘要由CSDN通过智能技术生成

记录最近遇到的一个小麻烦~~

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方法中的查询条件也要跟着保持一致,否则查询出来的结果可能还是原来条件下的结果。

最后贴上一个链接如何使用分页插件 如何使用分页插件icon-default.png?t=LA92https://pagehelper.github.io/docs/howtouse/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值