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

Posted macht

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中#{}和${}符号的区别相关的知识,希望对你有一定的参考价值。

{}??使用#{}意味着使用的预编译的语句,即在使用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中#{}和${}符号的区别的主要内容,如果未能解决你的问题,请参考以下文章

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

mybatis中#和$的区别

MyBatis 中#和$符号的区别

MyBatis探究-----接口类映射XML文件中符号$和#的区别

mybatis.xml文件中#与$符号的区别以及数学符号的处理

mybatis.xml文件中#与$符号的区别以及数学符号的处理