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語義