Mybatis中#{} 和 ${}区别
1.#{}
- #{}会作为sql参数使用,替代sql中的?
- 有预编译机制,防止sql注入,效率高
- 字符串;类型会自动在两边拼上单引号
2. ${}
- ${}会原样直接拼接到sql上
- 没有预编译机制,不能防止sql注入,效率低
- 字符串类型两边不会自动拼接单引号
3.测试
#{}测试结果如下
${}测试结果如下
4.总结
通常都使用#{},有预编译机制,可以防止sql注入,效率高。
但如果传递的是 表名 列名 关键字 等必须直接拼接到sql中的内容时,使用${},防止自动拼接单引号改变sql语义