Skip to content

foreach

基本语法

xml
<foreach 
    collection="集合"
    item="当前元素"
    index="索引"
    open="开始"
    separator="分隔符"
    close="结束">
    
    内容

</foreach>
属性作用
collection集合名称
item每一项的变量名
index下标(可选)
open开始符号
separator分隔符
close结束符号

应用

IN集合

xml
<select id="queryByIds" resultType="User">
    SELECT * FROM user
    WHERE id IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</select>
sql
WHERE id IN (1,2,3)
java
List<User> query(@Param("ids") List<Long> ids);

批量插入

xml
<insert id="batchInsert">
    INSERT INTO user (name, age)
    VALUES
    <foreach collection="list" item="item" separator=",">
        (#{item.name}, #{item.age})
    </foreach>
</insert>
sql
INSERT INTO user (name, age)
VALUES
('张三', 18),
('李四', 20),
('王五', 22)
java
int batchInsert(List<User> list);

必须判空

需要在Java中对集合进行判空处理:

java
if (list == null || list.isEmpty()) {
    return 0;
}
mapper.batchInsert(list);