区别:
1、#{ }是预编译处理,Mybatis在处理#{ }时,它会将sql中的#{ }替换为?,然后调用PreparedStatement的set方法来赋值,传入字符串以后,会在之两边加上单引号。
2、${ }是字符串拼接,Mybatis在处理${ }时,它会将sql中的${ }替换为变量的值,传入的数据不会在两边加上单引号。
注意:使用${ }会导致SQL注入,不利于系统的安全性。
SQL注入:就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。