在使用mybatis的模糊查询时,有俩个特殊符号需要注意:
%:相当于任意多个字符;
_:相当于任意的单个字符;
根据需求可以选择甄别,如果有要求排除特殊符号,那么写法如下:
在控制层接收到对应值得地方,加入replaceAll():
if(param != null){
map.put("param", param.replaceAll("%", "/%").replaceAll("_", "/_"));
}
这里给特殊符号进行替换;然后其他地方不做处理,直到mapper。xml的sql语句这里:
在对应的字段后面加入 ESCAPE '/'
<if test="param != null and param!= ''">
AND sp.param like '%'||#{param}||'%' ESCAPE '/'
</if>
以上,排除特殊符号的模糊查询完成。
写到这里,顺便记录一下mybatis中的特殊符号处理,及模糊查询的写法
xml特殊符号转义写法
< <
> >
<> <>
& &
' '
" "
也可以使用<![CDATA[ ]]>符号进行说明,将此类符号不进行解析 写法: <![CDATA[ 这里写你的sql ]]>
模糊查询的三种常用写法:
like concat('%',#{param},'%') 或者 like '%${param}%' ,还有就是我自己常用的上面那种 like '%'||#{param}||'%'