${参数},该参数不会转义,会被直接写入sql中,无法防止sql注入攻击。
#{参数},该参数会被转义成字符串,和?占位符功能相似,转义后,可以防止sql注入攻击。
$一般用来传数据库对象,比如表名
一般能用#就不要用$
ps:mybatis还会遇到<![CDATA[]]>的用法,该符号内的内容不会被当成字符串,而是直接当一个sql语句,比如执行一个存储过程
本文详细介绍了 MyBatis 中使用 # 和 $ 符号的区别。$ 符号会导致 SQL 注入风险,而 # 符号则可以有效避免此类安全问题。此外还解释了 <![CDATA[]]> 的用法及其在执行存储过程时的应用。
2万+

被折叠的 条评论
为什么被折叠?