最近做list批量插入数据库中,刚开始都是循环插入的,因为之前的数据量比较小,所以看不出来效率,但是数据大的话,这样循环的话很慢,于是就想到用批处理,网上找了找,发现很多都是基于mysql'的,oracle还真不多,于是查资料,总算找到了,只需要配置一个mapper文件就行了
<insert id="insertList" parameterType="java.util.List" >
insert into INF_COUNT_POOL (
COUNT_POOL_ID, COUNT_POOL_KEY, COUNT_POOL_VALUE,
COUNT_POOL_TIME, ORDER_NO, FLAG, CREATE_TIME
)
select SEQ_INF_COUNT_VARIABLE.NEXTVAL,A.* from(
<foreach collection="list" item="item" index="index" open="" close="" separator="union all">
select
#{item.countPoolKey,jdbcType=VARCHAR},
#{item.countPoolValue,jdbcType=DECIMAL},
#{item.countPoolTime,jdbcType=VARCHAR},
#{item.orderNo,jdbcType=VARCHAR},
#{item.flag,jdbcType=VARCHAR},
#{item.createTime,jdbcType=TIMESTAMP} from dual
</foreach>
) A
</insert>