0
点赞
收藏
分享

微信扫一扫

## MyBatis的like模糊查询中包含有特殊字符(_、\、%)

如果我们数据库中存的字段包含有"%"这两个like查询的通配符,那么在查询的时候把"%"当作关键字是查询不出来的,因为mybatis会把这两个字符当作通配符。 解决方法是要能加转义字符 mybatis 的select where 条件查询时,如果查询含有 _ 的字符串时,在 mapper.xml 中,使用 存储临时变量,将值中的所有的 _、\、% 前面加上 转义字符 / ,后面再增加 escape '/' ;

dept like concat('%', #{dept}, '%')

改为

<!-- 
<bind> 是 mybatis 用来存储临时变量的标签。
dept 是前端转来的值,deptTmp 是临时变量,mybatis 对 dept 值中的 _ 替换 /_ ,并保存在 deptTmp 。	        	
-->
<bind name="deptTmp" value='dept.replaceAll("/","//").replaceAll("_","/_").replaceAll("%","/%") />
and dept  like  concat('%', #{ deptTmp }, '%')  escape '/'

举报

相关推荐

0 条评论