Mybatis中#{} 和 ${}区别

1.#{}

  • #{}会作为sql参数使用,替代sql中的占位符
  • 有预编译机制,防止sql注入,效率高
  • 字符串;类型会自动在两边拼上单引号

2. ${}

  • ${}会原样直接拼接到sql上
  • 没有预编译机制,不能防止sql注入,效率低
  • 字符串类型两边不会自动拼接单引号

3.测试

#{}测试

Mapper中的代码

    <select id="selc01" resultType="cn.tedu.domain.User">
        select * from user where name = #{name};
    </select>

结果如下

${}测试

Mapper中的代码

    <select id="selc02" resultType="cn.tedu.domain.User">
        select * from user where name = '${name}';
    </select>

结果如下

4.总结

通常都使用#{},有预编译机制,可以防止sql注入,效率高。
但如果传递的是 表名 列名 关键字 等必须直接拼接到sql中的内容时,使用${},防止自动拼接单引号改变sql语义

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值