${}
和 #{}
在 MyBatis 中都是用于 SQL 参数替换的符号,它们的区别主要体现在以下几个方面:
- 功能不同:
${}
是直接替换,而#{}
是预处理; - 使用场景不同:普通参数使用
#{}
,如果传递的是 SQL 命令或 SQL 关键字,需要使用${}
,但在使用前一定要做好安全验证; - 安全性不同:使用
${}
存在安全问题,如 SQL 注入,而#{}
则不存在安全问题。
所以,${}
和 #{}
在 MyBatis 中都是用于 SQL 参数替换的符号,然而使用 ${}
可能存在安全问题,所以在能用 #{}
时,尽量使用 #{}
时,否则可以考虑在充分验证了参数安全之后使用 ${}
。
特殊说明
以上内容来自我的《Java 面试突击训练营》,这门课程是有着十几年工作经验(前 360 开发工程师),10 年面试官经验的我,花费 4 年时间打磨完成的一门视频面试课。学完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,并且课程配备了 9 大就业服务,帮助上千人找到 Java 工作,其中上百人拿到大厂 Offer,学员最高薪资 70W 年薪,面试课目录和 9 大服务如下:
加我微信咨询:vipStone【备注:训练营】