Mybatis中 與 的區別

2021-08-19 11:41:00 字數 612 閱讀 3415

mybatis中#與$的區別

mybatis中的#{}用於傳遞查詢的引數,用於從dao層傳遞乙個string引數過來(也可以是其他引數),select * from 表名 order by age=#

mybatis會把這個引數轉換成乙個字串。select * from 表名 order by age="age" 相當於jdbc中的預編譯,安全。

而${}一般用於order by的後面,mybatis不會對這個引數進行任何的處理,直接生成了sql語句。例:傳入乙個年齡age的引數,select * from 表名 order by $

mybatis生成的語句為 select * from 表名 order by age mybatis不會對$傳遞的引數做任何處理,相當於jdbc中的另外一種編譯方式。

一般我們使用#{},不使用${},原因:

會引起sql注入,${}會直接參與sql編譯。會影響sql語句的預編譯。

3. #方式能夠很大程度防止sql注入。

4.$方式無法防止sql注入。

5.$方式一般用於傳入資料庫物件,例如傳入表名.

6.一般能用#的就別用$.

mybatis排序時使用order by 動態引數時需要注意,用$而不是#

mybatis 中 與 的區別

mybatis ibatis中 和 的區別 1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2.將傳入的資料直接...

mybatis 中 與 的區別

mybatis將 解釋為jdbc prepared statement 的乙個 引數標記 而將 解釋為 字串替換 1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值...

mybatis 中 與 的區別

mybatis ibatis中 和 的區別 1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2.將傳入的資料直接...