#{}与${}区别

#{}(预编译):用于预编译的参数示记。当使用 时,MyBatis会将参数值放入一个预编译的Preparedstatement中,并确保参数值被正确地转义和引用,从而防止
SQL注入攻击。
#{}适用于大多数情况,尤其是当参数值是从用户输入中获得时,因为它提供了更好的安全性和可靠性。

${}(字符串替换):用于字符串替换的参数标记。当使用时,MyBatis会直接将参数值嵌入到SQL语句中,不会进行预编译或转义。这可能导致潜在的安全问题,如果
不正确地处理参数值,可能会导致SQL注入攻击。
${} 适用于一些特殊情况,例如在动态表名、列名或函数调用等情况下,但要谨慎使用,确保参数值的安全性。

1、#{} 是预编译处理,是占位符。 ${}是字符串替换,是拼接符。
2、mybatis 在处理 #{}时,会将SQL中的 #{}替换为 ?号,调用 Preparestatement 来赋值
3、mybatis 再处理 ${} 时,会将SQL中的 ${} 替换成变量的值,调用 statement 来赋值。
4、使用 #{}可以有效防止SQL注入,提高系统安全性
5、动态调整查询列,排序列使用 ${}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容