【JAVA面试】Mybatis中#{}和${}的区别

提示:文章先作为初版,等后续时间充足后,补充更深的内容


Mybatis中#{}和${}的区别

在 MyBatis 中,#{} 和 ${} 都是用于向 SQL 语句中动态添加参数的语法,但它们的处理方式是不同的。

#{}

#{}:预编译处理,将传入的参数按照 JDBC 类型进行处理,能够很好地防止 SQL 注入攻击,因为它会将传入的参数值进行替换,替换为?号,并将参数值通过 PreparedStatement 传递给数据库,从而避免了 SQL 注入

${}

${}:字符串拼接,将传入的参数直接按照字符串的形式拼接到 SQL 语句中,可以用于动态指定表名、列名等调用Statement来赋值,但容易受到 SQL 注入攻击的影响,因为用户输入的参数值会被直接拼接到 SQL 语句中。

总之,使用 #{} 可以更加安全地构建 SQL 语句,并且能够防止 SQL 注入攻击,建议优先使用 #{} 语法。而使用 ${} 则需要谨慎对待,必须确保输入参数的安全性,避免受到恶意攻击。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值