oracle:
<!-- 批量插入 主键自增-->
<insert id="insertBatch" parameterType="java.util.List">
insert into TAB_A (ID, CODE, NAME)
select SEQ_TAB_A.Nextval, t.* from (
<foreach collection="list" item="item" index="index" separator="union">
(select
#{item.code},#{item.name}
from dual)
</foreach>
) t
</insert>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="java.util.List">
<foreach collection="list" index="index" item="item" open="begin" close=";end;" separator=";">
update TAB_A
set CODE = #{item.code,jdbcType=VARCHAR},
NAME = #{item.name,jdbcType=VARCHAR}
where ID = #{item.id}
</foreach>
</update>
mysql:
<!-- 批量插入 主键自增 -->
INSERT INTO TABLE_A (NAME, age) VALUES
< foreach collection = "list" item = "item" INDEX = "index" OPEN = "(" SEPARATOR = "),(" CLOSE = ")" >
#{item.name, jdbcType=VARCHAR},
#{item.age, jdbcType=VARCHAR}
</ foreach >
<!-- 批量更新 方法1 -->
<foreach collection="list" index="index" item="item" open="" close="" separator=";">
update table_a
set age = age + 1,
update_dt = UTC_TIMESTAMP(3),
name = #{item.name,jdbcType=VARCHAR}
where id = #{item.id,jdbcType=VARCHAR}
and sex = #{item.sex,jdbcType=VARCHAR}
</foreach>
<!-- 批量更新 方法2-->
<update id="updateBatch" parameterType="java.util.List">
update sys_depart
set parent_id = CASE id
<foreach collection="list" item="item" index="index" open="" separator="" close="">
WHEN #{item.id,jdbcType=VARCHAR} THEN #{item.parentId,jdbcType=VARCHAR}
</foreach>
END,
depart_name = CASE id
<foreach collection="list" item="item" index="index" open="" separator="" close="">
WHEN #{item.id,jdbcType=VARCHAR} THEN #{item.departName,jdbcType=VARCHAR}
</foreach>
END
WHERE id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item.id,jdbcType=VARCHAR}
</foreach>
</update>