#{} 和${} 的区别
预编译 没有预编译
#{}与JDBC一样创建prearedStatement参数占位符并安全设置参数(就像使用 ? 一样),安全迅速,转义字符
${} 采用的是字符串拼接参数的形式,不太安全,当传入参数为字段名,表名,排序方式,固定常量则可以使用。不转义字符串,有风险,同时存在sql注入,一般设置固定变量,例如字段名。
用 ${}
方式传入数据直接显示在生成的sql中,且${}
无法防止sql注入,${}
一般用来传入数据库的对象,比如数据库表名
注意:mybatis排序的时候使用order by动态参数需要注意,使用${}而不使用#{}