4.4 foreach 标签用法

foreach 标签可以对数组Map或实现了Iterable接口(如List、Set)的对象进行遍历。数组在处理时会转换为List对象,因此foreach遍历的对象可以分为两大类:Iterable类型和Map类型,这两种类型在遍历循环时情况不一样。

<foreach collection="Iterable|Map" item="element" index="idx|key" open="(" close=")" separator=",">

</foreach>

foreach 包含以下属性。

  • collection:必填,值为要循环迭代的属性名。

  • item:变量名,值为从迭代过程中取出的每一个元素。

  • index:索引的属性名。

    • 在集合数组情况下值为当前索引值

    • 当迭代循环的对象是Map类型时,这个值为Map的key(键值)

  • open:整个循环内容开头的字符串。

  • close:整个循环内容结尾的字符串。

  • separator:每次循环的分隔符。

Mapper接口对应的方法中:

  • 如果参数类型为集合Collection的时候,默认会转换为Map类型,并添加一个key为collection的值(MyBatis 3.3.0版本中增加)。

  • 如果参数类型是List集合,那么就继续添加一个key为list的值(MyBatis 3.2.8及低版本中只有这一个key),这样,当collection="list"时,就能得到这个集合,并对它进行循环操作。

  • 当参数类型为数组的时候,也会转换成Map类型,默认的key为array

推荐使用@Param来指定参数的名字,这时collection就设置为通过@Param注解指定的名字。

使用Map和使用@Param注解方式类似,将collection指定为对应Map中的key即可。如果要循环所传入的Map,推荐使用@Param注解指定名字,此时可将collection设置为指定的名字如果不想指定名字,就使用默认值_parameter。

Last updated