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 @   键盘命  阅读(1647)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示