天天看点

Mybaits中模糊查询like中注意的点(#与$)

如果采用:

Like '%#{参数}$'
           

会报错,因为#{parameterName}引用参数的时候,Mybatis会把这个参数认为是一个字符串,并自动加上‘’

而采用以下方法:

Like '%${参数}$'
           

可以解决!

但是:

#{}是经过预编译的,是安全的。

而${}是未经过预编译的,仅仅是取变量的值,是非安全的,存在SQL注入。
           

解决方法:连接字符串,取出中间的‘字符

使用concat函数解决问题!

LIKE concat(concat('%',#{参数}),'%')
或者
like "%"#{参数}"%"
           

MySQL中concat函数

使用方法:

concat(str1,str2,…)

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

继续阅读