![](https://img-blog.csdnimg.cn/img_convert/da2043f19d39ff4f67edc6b2796031a0.png)
很多人在写模糊查询的时候会直接这样写,但是这样写在搜索框输入%和_的时候会将全部数据显示出来
例如:
![](https://img-blog.csdnimg.cn/img_convert/69606dfb86283756929d47a9daefa7f9.png)
例如这样
解决方式有两种:
1.
![](https://img-blog.csdnimg.cn/img_convert/4c7f6fb4f3c3e56fb50eab2096f10f26.png)
但是这样会有问题出现。
当你在搜索框搜索_%的时候任然会搜索出全部数据;因为转义只能够转义第一个字符所以推荐第二种方式
2.
@PostMapping("/s")
public int accountAdddd(String name){
System.out.println("接收到参数--"+name);
System.out.println("转义之后:");
System.out.println("自定义转义结果---"+getName(name));
System.out.println("replace转义结果---"+name.replace("%","\\%"));
return 2;
}
public String getName(String name) {
if(null != name && (name.contains("_") || name.contains("%") )){
char[] chars = name.toCharArray();
StringBuilder result = new StringBuilder();
for (char ch : chars) {
if(ch == '_' || ch == '%'){
result.append("\\");
}
result.append(ch);
}
return result.toString();
}
return name;
}
得以解决问题。