MyBatis的SQL映射文件中,`#`和`$`符号的区别
在MyBatis的SQL映射文件中,#
和$
符号用于处理SQL语句中的参数替换,但它们的工作方式和使用场景有所不同。
#{}
符号
- 预编译参数:
#{}
被用来作为预编译SQL语句的占位符。这意味着MyBatis会将你传入的参数设置为PreparedStatement的参数,从而防止SQL注入攻击,并允许MyBatis对传入的数据进行适当的类型转换。 - 安全性:由于它是通过JDBC的PreparedStatement机制来传递参数,因此能够有效避免SQL注入的风险。
- 示例:
这里的SELECT * FROM users WHERE id = #{userId}
#{userId}
会被实际的参数值所替换&#