这两个有什么区别?

来源: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注入隐患。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


0

0 学习 · 8016 问题

查看课程