Live2D

MyBatis 模糊查询时对特殊字符"%"和"_"的处理

MyBatis 模糊查询时对特殊字符"%“和”_"的处理

问题:

输入"%“或”_",查询结果为全部数据,且无法查询到带有"%"或者下划线 的数据。

解决:

对特殊字符转义

例如查询字段为 name

若name中含有"%“或 “_” 转为”/%" “/ _”

public void setName(String name) {
        this.name = StringUtils.isBlank(name) ? null : EscapeUtil.escapeChar(name);
    }
package com.xxx.util;

import org.apache.commons.lang3.StringUtils;

/**
 * @Title:EscapeUtil
 */
public class EscapeUtil {
    /**
     * mysql的模糊查询时特殊字符转义
     */
    public static String escapeChar(String before){
        if(StringUtils.isNotBlank(before)){
            before = before.replaceAll("_", "/_");
            before = before.replaceAll("%", "/%");
        }
        return before.trim() ;
    }
}

mapper中模糊查询语句

name like CONCAT('%',#{name},'%') ESCAPE '/'


posted @ 2022-10-16 19:32  键盘命  阅读(1564)  评论(0编辑  收藏  举报