这两个有什么区别?
来源:1-4 选择练习
一心励志当码农
2019-11-20 16:13:36
${}和#{}有什么区别?
1回答
好帮手慕柯南
2019-11-20
同学你好!
1. #{} 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个 #{ } 被解析为一个参数占位符;而${}仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换。
2. #{} 解析之后会将String类型的数据自动加上引号,其他数据类型不会;比如:order by #{id},如果传入的值是id,那么解析成sql时的值为order by “id”,而${} 解析之后是什么就是什么,他不会当做字符串处理。 order by ${id},如果传入的值是id,那么解析成sql时的值为order by id
3. #{} 很大程度上可以防止SQL注入(SQL注入是发生在编译的过程中,因为恶意注入了某些特殊字符,最后被编译成了恶意的执行操作);而${} 主要用于SQL拼接的时候,有很大的SQL注入隐患。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题