#{}代表占位符,使用预编译处理
${}代表字符串拼接
MyBatis在处理#{}时,会将其替换为?,调用PreparedStatement的set方法赋值,将其视作一个整体,MyBatis会进行必要的安全检查和转义
MyBatis在处理${}时,会将其替换为字符串,这样容易出现sql注入的危机
${}适合于有时候可能需要直接插入一个不做任何修改的字符串到SQL语句中:
动态SQL中的字段名,如:ORDER BY ${columnName}
详细可参考:https://blog.csdn.net/u013417227/article/details/70597871