目錄
在mybatis 的對映配置檔案中,動態傳遞引數有兩種方式:
1、#{} 佔位符
2、${} 拼接符
區別1#{} 為引數佔位符 ?,即sql 預編譯
${} 為字串替換,即 sql 拼接
區別2、
#{}:動態解析 -> 預編譯 -> 執行
${}:動態解析 -> 編譯 -> 執行
區別 3、
#{} 的變數替換是在dbms 中
${} 的變數替換是在 dbms 外
區別 4、
變數替換後,#{} 對應的變數自動加上單引號''
變數替換後,${} 對應的變數不會加上單引號''
區別 5、
#{} 能防止sql 注入
${} 不能防止sql 注入
#{}:select * from t_user where uid=#
${}:select * from t_user where uid= '$'
#{}:select * from t_user where uid= ?
${}:select * from t_user where uid= '1'
#{}:select * from t_user where uid= '1'
${}:select * from t_user where uid= '1'
單個引數的情形
多個引數的情形 #{}
1、不論是單個引數,還是多個引數,一律都建議使用註解@param("")
2、 能用 #{} 的地程式設計客棧方就用 #{},不用或少用${}
3、表名作引數時,必須用${}。如:select * from$
4、order by 時,必須用${}。如:s程式設計客棧elect * from t_user order by$
5、表名處用#{}會直接報錯;order by後面用#{}排序不生效
6、使用 ${} 時,要注意何時加或不加單引號,即${} 和 '${}'。一般字段型別為char或者varchar時需要加單引號
Mybatis中 和 有什麼區別
一般說來,二者的區別可總結為以下6點 1 將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2 將傳入的資料直接顯示生...
myBatis中 和 區別
1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2.將傳入的資料直接顯示生成在sql中。如 order by u...
mybatis 中 和 區別
在使用mybatis 框架時 在xml的配置檔案中,通常是使用 來獲取數值的 如 select from t user inf where id 這時 如果你傳入的值為zhangsan 則會編譯成為 select from t user inf where id zhangsan mybatis 會...