Mybatis中#{} 和 ${}區別

1.#{}

  • #{}會作爲sql參數使用,替代sql中的佔位符
  • 有預編譯機制,防止sql注入,效率高
  • 字符串;類型會自動在兩邊拼上單引號

2. ${}

  • ${}會原樣直接拼接到sql上
  • 沒有預編譯機制,不能防止sql注入,效率低
  • 字符串類型兩邊不會自動拼接單引號

3.測試

#{}測試

Mapper中的代碼

    <select id="selc01" resultType="cn.tedu.domain.User">
        select * from user where name = #{name};
    </select>

結果如下

${}測試

Mapper中的代碼

    <select id="selc02" resultType="cn.tedu.domain.User">
        select * from user where name = '${name}';
    </select>

結果如下

4.總結

通常都使用#{},有預編譯機制,可以防止sql注入,效率高。
但如果傳遞的是 表名 列名 關鍵字 等必須直接拼接到sql中的內容時,使用${},防止自動拼接單引號改變sql語義

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章