#{}与${}区别


今天被面试官问到MyBatis中#{}和${}的区别。很尴尬,忘记了!!!
忘记了不要紧,重要的是重新捡起来使用练习。

${}和#{}都是占位符,占位符是什么呢,可以理解为MyBatis的一个变量

${} 注入什么就是什么,且如果是简单类型的值需要用 value 来接收

{} 将传入的数据都当成一个字符串,简单的理解就是给你传入的数据自动的加上一对引号

${}
<select id="getUser" parameterType="java.lang.String" resultType="com.kenneth.model.entity ">
        SELECT * FROM t_user WHERE name = ${name}
</select>

当你的name传入xiaoming时,sql会变成

SELECT * FROM t_user WHERE name = xiaoming
#{} (常用,对于sql注入有一定的防控作用)
<select id="getUser" parameterType="java.lang.String" resultType="com.kenneth.model.entity ">
        SELECT * FROM t_user WHERE name = #{name}
</select>

当你的name还是传入xiaoming时,sql会变成

SELECT * FROM t_user WHERE name = 'xiaoming'
注:小本子拿出来做笔记

#{}方式能够很大程度防止sql注入;${}方式无法防止Sql注入。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM