符号使用
# 和 $ 的区别
- 使用 #{parameterName} 引用参数的时候,Mybatis 会把这个参数认为是一个字符串,例如 sql 传入参数 “Smith”,Select from emp where name = #{employeeName};
- 使用 ${parameterName} 引用参数的时候,上述例子中的 sql 语句变为 Select from emp where name = Smith;
简单来说,#{} 是经过预编译的是安全的,而 ${} 是未经过预编译的,仅仅是取变量的值是非安全的,存在 sql 注入的危险。# 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
ResultMap
Reference
- [这也许是你不曾留意过的 Mybatis 细节]https://juejin.im/post/5bce743ee51d457a4b4f956f