mybatis中like模糊查询特殊字符报错怎么实现转义处理

mybatis中like模糊查询特殊字符报错怎么实现转义处理

这篇文章给大家分享的是有关mybatis中like模糊查询特殊字符报错怎么实现转义处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

like模糊查询特殊字符报错转义处理

方案1

<iftest="projectName!=nullandprojectName!=''"><bindname="projectName_"value="'%'+projectName+'%'"/>ANDinfo.namelike#{projectName_}</if>

方案2

<iftest="projectName!=nullandprojectName!=''">ANDinfo.namelikeconcat('%',#{projectName_},'%')</if>

like模糊查询中包含有特殊字符(_、\、%)

使用MyBatis中的模糊查询时,当查询关键字中包括有_、\、%时,查询关键字失效。

mybatis中like模糊查询特殊字符报错怎么实现转义处理

  • 当like中包含_时,查询仍为全部,即 like '%_%'查询出来的结果与like '%%'一致,并不能查询出实际字段中包含有_特殊字符的结果条目

  • like中包括%时,与1中相同

  • like中包含\时,带入查询时,%%无法查询到包含字段中有\的条目

处理

工具类:特殊字符转义

importorg.apache.commons.lang3.StringUtils;publicclassEscapeUtil{//mysql的模糊查询时特殊字符转义publicstaticStringescapeChar(Stringbefore){if(StringUtils.isNotBlank(before)){before=before.replaceAll("\\\\","\\\\\\\\");before=before.replaceAll("_","\\\\_");before=before.replaceAll("%","\\\\%");}returnbefore;}}

注意

以上方法在关键字中包含有\可能会失效,失效的原因是由于查询的关键字的数据库字段排序规则为utf8_unicode_ci,要想不失效,查询的关键字的排序规则必须为utf8_general_ci,或者统一全部数据库字符集与排序规则分别为:utf8mb4与utf8mb4_general_ci

感谢各位的阅读!关于“mybatis中like模糊查询特殊字符报错怎么实现转义处理”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

发布于 2022-01-14 22:33:37
收藏
分享
海报
0 条评论
33
上一篇:C语言全排列回溯算法怎么用 下一篇:如何使用jquery实现图片轮播和滑动效果
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码