#{ }是预编译处理、是
占位符
, ${ }是字符串替换、是
拼接符
。
Mybatis 在处理#{ }时,会将 sql 中的#{}替换为?号,调⽤ PreparedStatement 来赋值;
Mybatis 在处理时就是把{}替换成变量的值,调⽤ Statement 来赋值;
#{ } 的变量替换是在DBMS 中、变量替换后,#{ } 对应的变量⾃动加上单引号,{ } 的变量替换是在
DBMS 外、变量替换后,{ } 对应的变量不会加上单引号
使⽤#{}可以有效的防⽌ SQL 注⼊, 提⾼系统安全性。