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语义

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章