oracle+mybatis如何批量插入?

dao:

int insertBatch(List<P> pos);

xml:

<insert id="insertBatch" parameterType="list" useGeneratedKeys="false" databaseId="oracle">
  insert into table_name (
    ID,
    FIELD_ONE,
    FIELD_TWO,
    FIELD_THREE
  )
  <foreach collection="list" item="item" index="index" separator="UNION ALL">
    select get_seq_next('seq_name'),
    #{item.fieldOne, jdbcType = ???},
    #{item.fieldTwo, jdbcType = ???},
    #{item.fieldThree, jdbcType = ???} from dual
  </foreach>
</insert>

注:table_name即表名;seq_name为自增序列名;get_seq_next()是个oracle函数,用来获取序列的下一个值,虽然按理说直接seq_name.nextval就可以了,但是这里会报错。

附get_seq_next()函数:

CREATE OR REPLACE
function get_seq_next (seq_name in varchar2) return number
is
seq_val number ;
begin
execute immediate 'select '|| seq_name|| '.nextval from dual' into seq_val ;
return seq_val ;
end;

龙门之桐,高百尺而无枝,其根半死半生。
原文地址:https://www.cnblogs.com/longmenzhitong/p/11122637.html