foreach的主要用在構建in條件中,它可以在SQL語句中進行迭代一個集合。
foreach元素的屬性主要有 item,index,collection,open,separator,close。
item集合中每一個元素進行迭代時的別名,
index表示在迭代過程中,每次迭代到的位置,
open該語句以什么開始,
separator在每次進行迭代之間以什么符號作為分隔 符,
close以什么結束,
在使用foreach的時候最關鍵的也是最容易出錯的就是collection屬性,
該屬性是必須指定的,但是在不同情況 下,該屬性的值是不一樣的,
主要有一下3種情況:
1. 如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list
2. 如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array
3. 如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了
eg:
使用 mybatis 時,如果要使用到 in 寫法,要使用 foreach ,里面幾個參數,看了很多地方,都說的不清不楚,自己最后各種測試,這里詳細說下:
(1)collection = “” ,這個參數是 dao 層(mapper)接口方法里面傳過來的集合參數,如果dao 層傳的參數只有一個,這里寫關鍵字 list(如果是數組,寫 array)
例子:
dao 層:User getInfo(List<Integer> user_ids)
collection = "list"
【
如果有多個參數,並且使用了 @Param 注解(import org.apache.ibatis.annotations.Param),則這里要寫注解里面的參數!
例子: dao 層 :User getInfo(@Param("user_ids")List<Integer> user_ids,@Param("xxx")String xxx)
collection = "user_ids"
】
(2)item = “” ,集合里面的單個值,給下面 #{ } 用
(3)index = "" ,這個是遍歷的下標,舉個簡單的例子立刻明白,就是平時 for 循環,我們定義的 i 一樣
例子: for(int i = 0 ;i < 10 ; i ++){
}
因此這個參數隨便定義都可以,有就行
(4)open separator close 這3個比較好理解,就是 ( , , ,) 這樣子啦,拼接括號,中間逗號隔開的意思
————————————————
版權聲明:本文為CSDN博主「QQ玉」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qinyf2015/article/details/78688877