Mybatis中#{} 和 ${}区别

1.#{}

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

Mybatis中#{} 和 ${}区别 

2. ${}

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

Mybatis中#{} 和 ${}区别3.测试

#{}测试结果如下

Mybatis中#{} 和 ${}区别

${}测试结果如下

Mybatis中#{} 和 ${}区别 

4.总结

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