MyBatis中 和 有哪些區別

2022-09-24 19:54:09 字數 1019 閱讀 6222

目錄

在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 會...