mybatis中foreach在不同场景下的使用整理
foreach实现in集合(批量查询)
<select id="" resultType ="">
SELECT *
FROM sys_user
WHERE id in
<foreach collectioin="list" open="(" close=")" separator="," item="id" index="i">
#{id}
</foreach>
</select>
foreach包含以下属性
- collection:必填,值为要迭代循环的属性名。这个属性值得情况有很多。
- item:变量名,值为从迭代对象中取出每一个值
- index:索引属性名,在集合数组情况下值为当前索引值,当迭代循环的对象是Map类型时,这个值为Map的Key
- open:整个循环内容开头的字符串
- close:整个循环内容结尾的字符串
- separator:每次循环的分隔符
foreach实现批量插入
INSERT INTO tablename (column-a,column-b,column-c....)
VALUES
<foreach collection = "list" item="user" separator =",">
(
#{user.a},#{user.b},#{user.c})
</foreach>
foreach实现批量更新
<update id ="">
UPDATE sys_user
SET
<foreach collection="_parameter" item="val" index="key" separator = ",">
${key} = #{val}
</foreach>
WHERE id = #{id}
</update>
- 注意:这里用的是$符号,key作为列名。对应的值作为该列的值