编程语言: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查询可以正常查询出来。