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 '/'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!