Mybatis 示例之 foreach (下)

2021-08-03 16:31:34 字數 2211 閱讀 6200

foreach是用來對3種型別的物件進行迴圈操作的,關於foreach的基礎知識請看:mybatis 示例之 foreach (上)

注:map型別沒有預設的map,所以不能直接寫collection="map",如果這麼寫,需要保證傳入的map引數有@param("map")註解。

有關引數的更詳細內容,建議看:深入了解mybatis引數

這節講的是foreach中map的用法。

map和list,array相比,map是用k,v儲存的,在foreach中,使用map時,index屬性值為map中的key的值。

因為map中的key不同於list,array中的索引,所以會有更豐富的用法。

第乙個簡單例子:

[html]view plain

copy

<

insertid=

"ins_string_string"

>

insert into string_string (key, value) values  

<

foreach

item

="item"

index

="key"

collection

="map"

open=""

separator

=","

close=""

>

(#, #)

foreach

>

insert

>

可以看到這個例子相當簡單,表中需要兩個值,正好和k,v對應,因而map中的乙個k,v就對應一條資料,如果map中有多個k,v,就會儲存多個結果。

如果map中有兩對k,v,那麼執行sql如下:

[plain]view plain

copy

debug [main] - ==>  preparing: insert into string_string (key, value) values (?, ?) , (?, ?)   

debug [main] - ==> parameters: key 1(string), value 1(string), key 2(string), value 2(string)  

debug [main] - <==    updates: 2  

大部分資料庫是支援values()()這種形式的插入語句,可以插入多條(

相關鏈結

- 可能需翻牆)。

下面再看乙個select的例子:

[html]view plain

copy

<

selectid=

"sel_key_cols"

resulttype

="int"

>

select count(*) from key_cols where  

<

foreach

item

="item"

index

="key"

collection

="map"

open=""

separator

="and"

close=""

>

$ = #

foreach

>

select

>

可以看到這裡用key=value來作為查詢條件,對於動態的查詢,這種處理方式可以借鑑。

一定要注意到$和#的區別

,$的引數直接輸出,#的引數會被替換為?,然後傳入引數值執行。

上述sql執行日誌如下:

[plain]view plain

copy

debug [main] - ==>  preparing: select count(*) from key_cols where col_a = ? and col_b = ?   

debug [main] - ==> parameters: 22(integer), 222(integer)  

debug [main] - <==      total: 1  

最後,如果不考慮元素的順序和map中key,map和list,array可以擁有一樣的效果,都是儲存了多個值,然後迴圈讀取出來。

Mybatis示例之SelectKey的應用

selectkey在mybatis中是為了解決insert資料時不支援主鍵自動生成的問題,他可以很隨意的設定生成主鍵的方式。不管selectkey有多好,盡量不要遇到這種情況吧,畢竟很麻煩。selectkey需要注意order屬性,像mysql一類支援自動增長bwakolgtjx型別程式設計客棧的資...

MyBatis對映示例

resultmap 返回結果的對映 resultmap的id是這個對映的名字,可在查詢語句中引用表示此查詢返回該結果 type是模型物件的類名,也可以寫成別名 簡化作用 簡化成別名時,需要先註冊別名 resultmap內部 標籤表示該查詢中涉及的主鍵的對映關係 標籤表示普通資料屬性或字段的對映關係 ...

mybatis學習筆記三之mybatis外掛程式

一 外掛程式介紹 一般情況下,開源框架都會提供外掛程式或其他形式的擴充套件點,供開發者自行擴充套件。一是增加了框架的靈活性 二是開發者可以結合實際需求,對框架進行擴充套件。以mybatis為例,我們可基於mybatis外掛程式機制實現分頁 分表 監控等功能,在無形中增強功能。二 mybatis外掛程...