跟mybatis配置   mybatis.configuration.default-executor-type   的设置没有关系!!!

 

1、oracle批量插入的语法跟mysql不同,oracler的语法,如插入三条数据:

insert into table(k1,k2,k3)

  select v1,v2,v3 from dual

union

  select v1,v2,v3 from dual

union

  select v1,v2,v3 from dual

 

2、找个表测试在数据库实际运行

 

 可以看到sql语句执行成功,并且返回受影响的行数为3行。

3、在mybatis里面批量插入的写法

复制代码
    <insert id="insertBatch" parameterType="java.util.List">

        INSERT INTO tinv_uploadreceipt ( id, receiptstate, receiptime, remark, receipuserid, createuserid, modifyuserid, taskid, logistics, logisticscode )
        <foreach collection="list" item="item" index="index" separator="union">
            select
                   FC_GetID ( 'TINV_UPLOADRECEIPTID', 1, 1 ), <!-- 这里是主键自增长 -->
                   1,
                   SYSDATE,
                   '',
                   '24681',
                   '24681',
                   '24681',
                    #{item.customerRemark},
                   #{item.logistics},
                   #{item.logisticsCode}
            from dual
        </foreach>

    </insert>
复制代码

接口Mapper方法,请求参数为List<Map>,返回类型为int是要返回受影响的条数

int insertBatch(@Param("list") List<Map<String,Object>> list);

4、调用实验,启动项目,并且在Service里面调用Mapper的方法

请求参数

[
        {
            "customerRemark": "1",
            "logistics": "1",
            "logisticsCode": "1"
        },
        {
            "customerRemark": "2",
            "logistics": "2",
            "logisticsCode": "2"
        },
        {
            "customerRemark": "3",
            "logistics": "3",
            "logisticsCode": "3"
        }
    ]
debug在Service看返回值,发现i为3,我们新增三条,正确