Mybatis中 和 的區別

2021-10-03 20:10:39 字數 1143 閱讀 1490

mybatis在專案中起到的是專案和資料庫的互動以及sql語句的管理,sql語句的集中管理,方便開發人員對sql語句的復用和管理,但是既然需要復用,就表明sql語句本身是進過抽象的,抽象的目標就是引數,在不同的用途就需要傳入不同的引數${}和#{}就是用來向已經定義好的sql語句傳入引數的。

#{} 這種取值是變異號sql語句之後再取值,新增的值有' '包裹

${} 這種取值是取值之後再去編譯sql語句,新增的值沒有' '包裹

select * from user where account = # and password = #

上述sql語句經過編譯之後的結果是

select * from user where account = '122221122' and password = '1515131811515'
select * from user where account = $ and password = $

上述sql語句經過編制之後的結果是

select * from user where account = 122221122 and password = 1515131811515
${}導致的sql注入的情況

上面案例中的sql語句,如果password傳入的引數值是『12252152521 or 1=1』

select * from user where account = 122221122 and password = 12252152521 or 1=1

#{}防止sql注入的情況

select * from user where account = 122221122 and password = '12252152521 or 1=1'

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

Mybatis 中 和 區別

號與 區別 號表示引數,代表乙個字串。如 select a,b,c from table1 where id value 傳入引數後如 value 1 則可生成 select a,b,c from table1 where id 1 select a,b,c from table1 where ci...