标签:mybatis
这一篇主要来记录学习MyBatis时,#和$用法的区别。
MyBatis将 #{…} 解释为JDBC prepared statement 的一个参数标记。也就是说在MyBatis中#{…}是用来传递参数的。例如:如果传递一个参数criteria,值为1,那在select * from table where col1 = #{criteria} 这一条语句中,实际上在数据库里面执行的语句就是 select * from table where col1 = 1 。
而在MyBatis中将 \${…} 解释为字符串替换。也就是说在sql语句中使用\${…}传过来的任何参数都讲当做字符串来看待。
在一般情况下,能用#{…}的就不要使用${…},这是因为#{…}方能够很大程度防止sql注入攻击,而${…}是无法防止注入攻击的。
另外,字符串替换在处理复杂类型也可能常常发生问题,如日期类型。由于这些因素,MyBatis建议我们尽可能地使用 #{…} 这种方式。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:mybatis
原文地址:http://blog.csdn.net/wild_elegance_k/article/details/47702727