码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis中#{}和${}符号的区别

时间:2019-11-17 23:50:56      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:区别   默认   sql注入   jdbc   ati   state   后台   引号   span   

{}??使用#{}意味着使用的预编译的语句,即在使用jdbc时的preparedStatement,sql语句中如果存在参数则会使用?作占位符,我们知道这种方式可以防止sql注入,并且在使用#{}时形成的sql语句,已经带有引号,例,select? * from table where id=#{id} 在调用这个sql时我们可以通过后台看到打印出的sql为:select * from table where id=‘2‘ 假如传的id值为2.也就是说在组成sql语句的时候把参数默认为字符串。

\({}?使用\){}时的sql不会当做字符串处理,如上边的语句:select * from table where id=${id} 在调用这个语句时控制台打印的为:select * from table where id=2 and name=3 ,假设传的参数id值为(2 and name=3),这样就会带来sql注入。

这里也不是说\({}一无是处,比如在MyBatis动态排序时使用order by +\){动态参数},使用${}而不是#{}。

mybatis中#{}和${}符号的区别

标签:区别   默认   sql注入   jdbc   ati   state   后台   引号   span   

原文地址:https://www.cnblogs.com/macht/p/11879160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!