MyBatis 中蛔糯,foreach 標(biāo)簽可用于批量插入記錄,當(dāng)然窖式,批量插入的方式有很多蚁飒,本篇文章主要講解在 mapper 文件中,使用 foreach 標(biāo)簽批量插入脖镀。
collection(必選)
collection 屬性是 foreach 標(biāo)簽中最復(fù)雜的一個(gè)屬性,不過別慌狼电,我們今天就要把它捋直了蜒灰。首先我們需要明白,mybatis 在使用 foreach 標(biāo)簽批量插入數(shù)據(jù)時(shí)肩碟,會(huì)將 DAO 方法中參數(shù)封裝成 Map 類型强窖,然后在 collection 屬性中,指定批量數(shù)據(jù)源所在 Map 中的 key削祈,通這個(gè) key 拿到批量數(shù)據(jù)源翅溺。到這里我們明白了脑漫,其實(shí) collection 屬性就是 key 嘛 -_-。明白了這個(gè)咙崎,我們?cè)偕钊?/p>
- 如果只有一個(gè)參數(shù)
- 參數(shù)類型是 「List」:key 默認(rèn)為 list 或 collection优幸,如果要修改這個(gè)默認(rèn)名,用 @Param 注解即可
- 參數(shù)類型是 「數(shù)組」:key 默認(rèn)為 array褪猛,修改默認(rèn)名同 List
- 參數(shù)類型是 「Map」: 很遺憾网杆,單個(gè)參數(shù)時(shí)將因取不到值而異常,但多個(gè)參數(shù)時(shí)可以用此類型
- 參數(shù)類型是 「對(duì)象」:key 需要指定對(duì)象中類型為「List」或「數(shù)組」的屬性伊滋,且這個(gè)屬性必須有 get 方法
- 如果有多個(gè)參數(shù)
- key 默認(rèn)為參數(shù)名碳却,取的是什么名就是什么;同時(shí)笑旺,mybatis 也會(huì)按參數(shù)順序昼浦,為每個(gè)參數(shù)默認(rèn)生成名為 param1,param2,... 的 key,不過很少用
- 批量數(shù)據(jù)源類型可以是 List筒主、數(shù)組关噪、Map。如果是 Map物舒,值可以放對(duì)象或另一個(gè) Map色洞,整出一些復(fù)雜插入
item(必選)
每一個(gè)元素進(jìn)行迭代時(shí)的別名,可以隨便取
index(可選)
- 參數(shù)類型是 List 或 數(shù)組: 值為每次迭代到的下標(biāo)位置
- 參數(shù)類型是 Map:值為 key
- 名字隨便取
separator(可選)
表示在每一次進(jìn)行迭代之間以什么符號(hào)作為分隔符
open(可選)
整個(gè)循環(huán)完成時(shí)冠胯,遍歷出的所有結(jié)果拼接一個(gè)開始的字符火诸,而不是每一次
close(可選)
同 open,只是在結(jié)束位置
其它
- mybatis 插入成功后返回的是本次插入的總條數(shù)荠察,而不是成功與否的狀態(tài)