1#{} 和 ${} 的区别?
-
#{}
是占位符,预编译处理;${}
是拼接符,字符串替换,没有预编译处理。 -
Mybatis在处理
#{}
时,#{}
传入参数是以字符串传入,会将SQL中的#{}
替换为?
号,调用PreparedStatement的set方法来赋值。 -
#{}
可以有效的防止SQL注入,提高系统安全性;${}
不能防止SQL 注入。 -
#{}
的变量替换是在DBMS 中;${}
的变量替换是在 DBMS 外。
2 模糊查询like语句该怎么写?
-
’%${question}%’
可能引起SQL注入问题(不推荐)。 -
"%"#{question}"%"
注意:因为#{…}解析成sql语句时候,会在变量外侧