foreach
可以用于批量删除数据、批量更新数据、批量查询数据、批量插入数据。
在批量删除数据、批量更新数据、批量查询数据这三种情况的时候,foreach
一般在IN
关键字的子句中使用。
批量删除数据:
<delete id="deleteArticleById">
DELETE FROM article WHERE id IN
<foreach collection="aids" item="aid" open="(" close=")" separator=",">
#{aid}
</foreach>
</delete>
批量更新数据
<update id="updateArticleState">
UPDATE article SET state=#{state} WHERE id IN
<foreach collection="aids" item="aid" separator="," open="(" close=")">
#{aid}
</foreach>
</update>
但是在批量插入数据的时候,不是在关键字IN
的子句中使用,而且foreach
中的子元素也不太一样。
批量插入数据
<insert id="addRoles">
insert into roles_user values
<foreach collection="roles" separator="," item="role">
(null , #{role}, #{uid})
</foreach>
</insert>