问题描述:
select * from user where name like concat(#{name,jdbcType=VARCHAR},'%')
name传入"孙悟空%",执行sql发现搜索结果等同于 like 孙悟空%
结论:
Mybatis中like查询建议使用CONCAT()函数来拼接
but 预编译语句,遇到%和_这种数据库模糊查询的特殊字符,需要自己转义
附转义方法:
String s = str.replaceAll("\\\\%", "")
注意这里得用四个反斜杠
1.字符串里面表示斜杠需要两个斜杠如“\\”
2.正则表达式里的斜杠也需要转义,是用“\\”标示