关于mybatis #{} 和 ${} 的问题

这真的是一个老生长谈的问题了 为了加深印象还是记录一下

首先 ${} 就是简单的拼接,就像我们写Java的时候 string s = “231” +“1231” 最后拼出来一个字符串一样

但是这个问题是 单纯的拼接就没办法 有效的检查合法性 你也不知道 它会拼什么东西,

所以这种就有sql注入的风险。

然后就是推荐使用的#{}

在 MyBatis 中,#{} 是用于参数绑定的占位符语法,它的主要作用有两个方面:

防止 SQL 注入:当使用 #{} 时,MyBatis 会将参数值按照预定义的规则进行转义和处理,将参数值安全地插入到 SQL 语句中,从而避免了 SQL 注入的风险。MyBatis 会自动将参数值进行参数化处理,保证参数值不会被误解为 SQL 语句的一部分,而是作为参数传递给数据库,这样就不会受到恶意输入的影响。

防止 SQL 注入之外的错误:使用 #{} 能够保证参数值的类型和格式正确,避免了因为参数值格式不正确而导致的 SQL 执行错误。例如,如果参数值是字符串类型,MyBatis 会自动在字符串两侧添加引号,确保 SQL 语句的语法正确。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值