编程语言:java
框架:SSM
模糊查询实现方式:
<if test="goodsCode != null">
and (goods_code like CONCAT(CONCAT('%', #{goodsCode}), '%')
</if>
用concat拼接mybatis传下来的值拼接到sql中
效果:
在搜索框输入%字符时,即使数据中有带%的数据,也查询不出来。
解决:
在传查询值的时候,需要进行转义,用下面的操作方法:
/**
* 百分号,反斜杠,下划线转义-王啸-2018年1月5日13:03:59
* @param keyword
* @return
*/
private static String transfer(String keyword) {
if(keyword.contains("%") || keyword.contains("_")){
keyword = keyword.replaceAll("\\\\", "\\\\\\\\")
.replaceAll("\\%", "\\\\%")
.replaceAll("\\_", "\\\\_");
}
return keyword;
}
这个方法可以直接转义下划线,反斜杠和百分号,十分方便,并且用sql或者mybatis查询可以正常查询出来。