#{}與${}區別


今天被面試官問到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