参考:mybatis 对 oracle 的批量操作:https://blog.youkuaiyun.com/dzhuqiaolun/article/details/54864521
写法一:
<insert id="insertAttractionsBatch" parameterType="java.util.List" useGeneratedKeys="false">
insert into ATTRACTIONS (
ID, NAME, LONGITUDE, LATITUDE, UPDATE_TIME
)
<foreach collection="list" item="item" index="index" separator="union all" >
(select
#{item.id,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR},
#{item.longitude,jdbcType=DECIMAL}, #{item.updateTime,jdbcType=TIMESTAMP}
from dual)
</foreach>
</insert>
写法二:
INSERT ALL INTO tb_red VALUES(1000, 8001, '2016-10-10 10:59:59', 1, 8001, '测试用户1000', '红名单0', '男', '膜法学院', '被测')
INTO tb_red VALUES (1001, 8001, '2016-10-10 11:00:00', 2, 8001, '测试用户1001', '红名单1', '男', '膜法学院', '被测')
INTO tb_red VALUES (1002, 8001, '2016-10-10 11:00:01', 0, 8001, '测试用户1002', '红名单2', '男', '膜法学院', '被测')
INTO tb_red VALUES (1003, 8001, '2016-10-11 10:59:59', 1, 8001, '测试用户1003', '红名单3', '男', '膜法学院', '被测')
INTO tb_red VALUES (1004, 8001, '2016-10-11 11:00:00', 2, 8001, '测试用户1004', '红名单4', '男', '膜法学院', '被测')
INTO tb_red VALUES (1005, 8001, '2016-10-11 11:00:01', 0, 8001, '测试用户1005', '红名单5', '男', '膜法学院', '被测')
select 1 from dual;
<!-- 保存新增数据 -->
<insert id="saveDatalist" parameterType="java.util.List" useGeneratedKeys="false">
INSERT ALL
<foreach collection = "list" item ="item" index ="index">
into ${item.p_code}
<foreach collection="item.list" item="k" index="index" open="(" separator="," close=")">
${k}
</foreach>
values
<foreach collection="item.list" item="k" index="index" open="(" separator="," close=")">
${item.pama[k]}
</foreach>
</foreach>
select 1 from dual
</insert>