mybatis对特殊字符的模糊查询
最近开发一个功能时遇到的问题,pg数据库里面存储的有包含"_"下划线的名字时,模块查询使用 下划线
作为关键字进行模块查询时,会把所有数据查出来,发现是使用LIKE关键字进行模糊查询时,%、下划线 和 [] 单独出现时,会被认为是通配符,所以需要进行转义,然后通过ESCAPE告诉数据库转义字符后的字符为实际值。
首先对关键字进行转义
if (keyWord != null) {
keyWord = keyWord.replaceAll("_", "/_");
}
在mabatis的mapper文件中,在like语句后面加上ESCAPE,告诉数据库转义字符为“/”
like #{pattern_keyWord} ESCAPE '/'