Mybaits中模糊查询like中注意的点(#与$)
程序员文章站
2022-04-03 08:26:13
...
如果采用:
Like '%#{参数}$'
会报错,因为#{parameterName}引用参数的时候,Mybatis会把这个参数认为是一个字符串,并自动加上‘’
而采用以下方法:
Like '%${参数}$'
可以解决!
但是:
#{}是经过预编译的,是安全的。
而${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。
解决方法:连接字符串,取出中间的‘字符
使用concat函数解决问题!
LIKE concat(concat('%',#{参数}),'%')
MySQL中concat函数
使用方法:
concat(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。