Mybatis中的 和 區別與用法

2021-08-31 04:03:37 字數 552 閱讀 4597

我們經常使用的是#{},一般解說是因為這種方式可以防止sql注入,簡單的說#{}這種方式sql語句是經過預編譯的,它是把#{}中間的引數轉義成字串,舉個例子:

select * from student where student_name = # 

預編譯後,會動態解析成乙個引數標記符?:

select * from student where student_name = ?

而使用${}在動態解析時候,會傳入引數字串

select * from student where student_name = 'lyrics'

總結:#{} 這種取值是編譯好sql語句再取值

${} 這種是取值以後再去編譯sql語句

#{}方式能夠很大程度防止sql注入。

$方式無法防止sql注入。

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

一般能用#的就別用$.

舉個activiti工作流的例子:

select * from $act_hi_procinst where proc_inst_id_ = #

Mybatis 與 的區別與用法

區別 這種傳參,自帶 沒有sql注入的風險,而 傳入的時候不帶 有sql注入額風險 的用法 多用於模糊查詢,或者特定的 需要傳入sql片段的時候,例如 模糊查詢 selectuserbyname parametertype string resulttype user select from use...

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 如果傳入的值...