千家信息网

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

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,这篇文章给大家分享的是有关mybatis中like模糊查询特殊字符报错怎么实现转义处理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。like模糊查询特殊字符报错转义处理方案
千家信息网最后更新 2024年11月28日mybatis中like模糊查询特殊字符报错怎么实现转义处理

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

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

方案1

                            AND info.name like #{projectName_}        

方案2

                AND info.name like concat('%',#{projectName_},'%')        

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

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

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

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

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

处理

工具类:特殊字符转义

import org.apache.commons.lang3.StringUtils; public class EscapeUtil {    //mysql的模糊查询时特殊字符转义    public static String escapeChar(String before){        if(StringUtils.isNotBlank(before)){            before = before.replaceAll("\\\\", "\\\\\\\\");            before = before.replaceAll("_", "\\\\_");            before = before.replaceAll("%", "\\\\%");        }        return before ;    }}

注意

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

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

0