mybatis理解#{}与${}之区别

1、#{}:

#{}解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,就像JDBC中使用Statement进行数据库操作,sql语句直接与参数值拼接,容易引发sql注入攻击。

2、${}:

${仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换;就像JDBC中使用PreparedStatement进行数据库操作,可以有效防止sql注入攻击。

 

综上所得, ${ } 变量的替换阶段是在动态 SQL 解析阶段,而 #{ }变量的替换是在 DBMS 中。

posted @ 2017-08-18 00:20  QuestCode  阅读(127)  评论(0编辑  收藏  举报