MyBatis官方文档http://code.google.com/p/mybatis/wiki/faq)对两者的描述是:#{…}是一个参数标记,而${…}只是简单的字符串替换。一般而言,为避免SQL注入攻击,传递参数应使用#{…}方式,因为这样MyBatis会处理好特殊字符转义的问题;但在SQL语句的某些地方,又不能使用#{…}方式。上述文档举出的例子是不能用这种方式指定表名,而根据我们的经验,在order by子句中也不能用这种方式。从中我们可以总结出:对于诸如表名、字段名如order by子句后的排序字段)这些表本身或其字段的名字,和SQL关键字如order by子句后的asc关键字),是不能使用#{…}方式的,而只能使用字符串替换的${…}方式。
mybatis #{…}与${…}差异小议
最新推荐文章于 2018-02-24 23:56:49 发布