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;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM