ibatis與mybatis中 和 的區別

2021-09-12 12:47:43 字數 1083 閱讀 3063

我們在ibatis和mybatis中編寫sql語句時,經常需要用到變數替換,ibatis是mybatis的前身,所以很多東西都很相似

例如 $ 和 # 在兩者中都可以用來變數替換,但是 $ 僅僅是簡單的字元拼接,它是直接進行值替換,而且容易被sql注入,而 # 是根據值的型別來進行替換:

select * from table where id = #id# ,其中如果欄位id為字元型,那麼#id#表示的就是'id'型別,如果id為整型,那麼#id#就是id型別。
select * from table where id = $id$ ,如果欄位id為整型,sql語句就不會出錯,但是如果欄位id為字元型,那麼sql語句應該寫成 select * from table where id = '$id$'
select * from table where id = $id$ 

等效於stringbuffer sb = new stringbuffer(256); 

sb.tostring(); 

select * from table where id = #id#

等效於prep = stmt.createpreparestement("select * from table id = ?");

prep.setint(1, 1001);

同理的mysql中的 $ 與 # 的用法也是一樣,${}表示值替換, #{}表示按照型別進行替換。

下面再給出幾種模糊查詢的方式,注意,這裡是mybatis的,如果使用ibatis請使用  #name# 或 $name$ 替換

name like"%"#"%"  --按照型別進行變數替換

name like '%$%'  --直接值替換,當值為字串型別時需要在外圍加上引號,否則會報錯

name like concat('%',#,'%')  --使用內建函式進行拼接,預防了使用$而出現的sql注入風險

name like concat('%','$','%')  --同上,但是無法避免sql注入風險

name like '%'||#||'%'    --此方式為ibatis中的一種拼接方式

Mybatis與ibatis的區別

隨著開發團隊轉投google code旗下,ibatis3.x正式更名為mybatis 雖然從正式版發布至今也有近一年時間,官方也非常友好的提供了中文版的使用手冊,不過相信很多人還在專案中使用ibatis2.x版本。究竟mybatis有哪些新特性,能給我們帶來哪些好處呢?以下是我看一位大俠研究後 1...

Mybatis與Ibatis的區別

mybatis與ibatis的區別 1 mybatis實現了介面繫結,使用更加方便 在ibatis2.x中我們需要在dao的實現類中指定具體對應哪個xml對映檔案,而mybatis實現了dao介面與xml對映檔案的繫結,自動為我們生成介面的具體實現,使用起來變得更加省事和方便。這可以說是mybati...

Mybatis與Ibatis的區別

mybatis與ibatis的區別 1 mybatis實現了介面繫結,使用更加方便 在ibatis2.x中我們需要在dao的實現類中指定具體對應哪個xml對映檔案,而mybatis實現了dao介面與xml對映檔案的繫結,自動為我們生成介面的具體實現,使用起來變得更加省事和方便。這可以說是mybati...