Mybatis 最近知識總結(1)

2021-08-07 04:52:55 字數 790 閱讀 2218

-- 你不得不承認 在專案中 如果不遇見問題 你是不會去了解#{} 和${} 的區別的

-- 我見過好多專案中用的是${} 但是不提倡

-- (1)#將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。

-- 如:order by #job#,如果傳入的值是programer,那麼解析成sql時的值為order by "programer",如果傳入的值是job,則解析成的sql為order by "job"。

-- #{} 在預處理時,會把引數部分用乙個佔位符 ? 代替 變成如下的 sql 語句

order by ?

-- (2) $將傳入的資料直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是programer,那麼解析成sql時的值為order by programer, 如果傳入的值是job,則解析成的sql為order by job。 

-- ${} 只是簡單的字串替換,在動態解析階段,該 sql 語句會被解析成

order by job

-- (3) #方式在很大程度上能夠防止sql注入。
-- (4) $方式無法防止sql注入。
-- (5) $方式一般用於傳入資料庫物件,例如傳入表名 欄位名等。
-- (6) 一般能用#的就別用$。  因為 ${} 會導致 sql 注入的問題。

MYSQL 最近知識總結(1)

關於 mysql時間函式 獲取當前日期 2017 08 17 select current date 獲取當前時間20 03 07 select current time 獲取當前的日期和時間2017 08 17 20 03 24 select now select sysdate select c...

mybatis知識總結

select ifnull max id 0 1 from t pandas select nvl max id 0 1 from t pandas insert into t pandas name gender birthdate id values update t pandas name g...

mybatis知識點總結

1 resultmap resulttype parametertype parametermap的區別 2 的區別 1 將傳入的資料都當成是乙個字串,會自動對傳入的資料加上乙個雙引號 2 是乙個替換的功能 3 方式可以很大程度上防止sql注入 4 一般用於傳入資料庫物件,例如傳入表名 5 myba...