1.${}就是直接把大括号里面的值给替换了,不能防止sql注入。
2.#{}比较安全,已经被数据库预编译才会运行的,可以有效防止sql注入。但是有些情况用不了,存在局限性。能够把string类型的在拼接的时候自动加上引号,其他数据类型不加引号。
注意:#{}占位符不能解决以下3类问题:
表名是动态的:Select * from #{table_name}
列名是动态的:Select #{column_name} from t_role
排序列是动态的:Select * from t_role order by #{column}
mybatis 之 占位符#{} 和 ${}