mybatis之foreach标签
作用:foreach可以遍历对象,集合,数组,map等;
当传入参数为数组或者集合时需要通过<foreach></foreach>
标签进行遍历。
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
属性名称 | 作用 |
---|---|
collection | 指定输入对象中集合属性 |
index | 当迭代对象是数组,列表时,表示的是当前迭代的次数 |
item | 每次遍历生成的对象 |
open | 开始遍历时拼接的串 |
separator | 遍历完一次后,在末尾添加的字符等 |
close | 结束遍历时两个对象需要拼接的串 |
实例代码:
入参为集合或数组类型
-
首先在Mapper中定义一个集合或者数组
void updateProductRateByIds(List<String> list);
-
在xml映射文件中
<update id="updateProductRateByIds"> UPDATE product_rate_level SET del_flag = 1 WHERE id IN <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #{item} </foreach> </update>
入参为实体类型
同理,也可以定义一个实体类型的入参,实体的某个字段是一个集合或数组,遍历的时候直接取集合中实体的字段即可,如:
void updateProductInfoByIds(List<PlatfProductInfo> list);
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item.id}
</foreach>
PlatfProductInfo定义:
@Data
public class PlatfProductInfo{
private String id;
}