foreach屬性
屬性描述
item
迴圈體中的具體物件。支援屬性的點路徑訪問,如item.age,item.info.details。
具體說明:在list和陣列中是其中的物件,在map中是value。
該引數為必選。
collection
要做foreach的物件,作為入參時,list>物件預設用list代替作為鍵,陣列物件有array代替作為鍵,map物件用map代替作為鍵。
當然在作為入參時可以使用@param("keyname")來設定鍵,設定keyname後,list,array,map將會失效。 除了入參這種情況外,還有一種作為引數物件的某個欄位的時候。舉個例子:
如果user有屬性list ids。入參是user物件,那麼這個collection = "ids"
如果user有屬性ids ids;其中ids是個物件,ids有個屬性list id;入參是user物件,那麼collection = "ids.id"
上面只是舉例,具體collection等於什麼,就看你想對那個元素做迴圈。
該引數為必選。
separator
元素之間的分隔符,例如在in()的時候,separator=","會自動在元素中間用「,「隔開,避免手動輸入逗號導致sql錯誤,如in(1,2,)這樣。該引數可選。
open
foreach**的開始符號,一般是(和close=")"合用。常用在in(),values()時。該引數可選。
close
foreach**的關閉符號,一般是)和open="("合用。常用在in(),values()時。該引數可選。
index
在list和陣列中,index是元素的序號,在map中,index是元素的key,該引數可選。
[html]view plain
copy
?<
selectid=
"countbyuserlist"
resulttype
="_int"
parametertype
="list"
>
select count(*) from users
<
where
>
id in
<
foreach
item
="item"
collection
="list"
separator
=","
open
="("
close
=")"
index=""
>
#
foreach
>
where
>
select
> ::
select count(*) from users where id in ( ? , ? )
[html]view plain
copy
?<
insertid=
"addlist"
>
insert into deliver
( <
include
refid
="selectallcolumnssql"
/>
) <
foreach
collection
="deliverlist"
item
="item"
separator
="union all"
>
select
#,
# from dual
foreach
>
insert
> ::
insert into deliver select ?,? from dual union all select ?,? from dual
[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
> ::
insert into string_string (key, value) values (?, ?) , (?, ?)
-- mysql
[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
> ::
select count(*) from key_cols where col_a = ? and col_b = ? (一定要注意到$和#的區別,$的引數直接輸出,#的引數會被替換為?,然後傳入引數值執行。)
mybatis批量操作
查詢id在in裡面的測試 list測試 listselectidin param idlist listidlist 查詢id在in裡面的測試 map測試,就是id在乙個map中 listselectinmap param idmap hashmapidmap 修改所有id在list中的測試 int...
mybatis批量操作
應用場景 今天做了乙個插入資料的小功能,將含有50個物件的集合 list 插入到資料庫。自然而然的就要到了mybatis批量插入,記得剛參加工作時,類似場景我會寫乙個for迴圈,逐條插入資料。運算元據庫的時候會經過這樣乙個流程 建立 開啟 執行sql 關閉連線,建立和開啟資料庫連線對效能是有損失的,...
MyBatis 批量操作
使用mybatis做資料處理框架時,操作大量資料的插入 更新等耗時的工作時,可以使用批量處理來提高效率,mybatis的批量處理主要使用foreach標籤來實現。foreach 元素的功能是非常強大的,它允許你指定乙個集合,宣告可以用在元素體內的集合項和索引變數。它也允許你指定開閉匹配的字串以及在迭...