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

如果采用:

Like '%#{参数}$'

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

而采用以下方法:

Like '%${参数}$'

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

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

解决方法:连接字符串,取出中间的‘字符 使用concat函数解决问题!

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

MySQL中concat函数
使用方法:
concat(str1,str2,…)

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

原文:https://blog.csdn.net/jiahuan_/article/details/117919926

posted @ 2022-03-28 21:16  杨杨杨0411  阅读(321)  评论(0)    收藏  举报