<insert id="batchInsert" parameterType="map">
insert all
<foreach collection="subList" item="detail">
into T_BI_CommissionBackReport(
fid,
fpositionType,
fearning,
fproportion,
fmoney,
fmonth,
fkcuId,
fkorgId,
forgname,
fkareaOrgId,
fareaorgname,
fkbigAreaOrgId,
fbigareaorgname,
fkpersonId,
fkcommissionBackSettingId
)
VALUES(
#{detail.id,jdbcType=VARCHAR},
#{detail.positionType,jdbcType=VARCHAR},
#{detail.earning,jdbcType=NUMERIC},
#{detail.proportion,jdbcType=VARCHAR},
#{detail.money,jdbcType=NUMERIC},
#{detail.month,jdbcType=VARCHAR},
#{detail.cu.id,jdbcType=VARCHAR},
#{detail.org.id,jdbcType=VARCHAR},
#{detail.org.name,jdbcType=VARCHAR},
#{detail.areaOrg.id,jdbcType=VARCHAR},
#{detail.areaOrg.name,jdbcType=VARCHAR},
#{detail.bigAreaOrg.id,jdbcType=VARCHAR},
#{detail.bigAreaOrg.name,jdbcType=VARCHAR},
#{detail.person.id,jdbcType=VARCHAR},
#{detail.commissionBackSetting.id,jdbcType=VARCHAR}
)
</foreach>
select 1 from dual
</insert>
关键点:insert all ; foreach遍历 ; select 1 from dual
注意:该种批量插入方式只适合Mybatis中Oracle的使用,不适用于在Oracle数据中直接插入数据是的批量插入。Oracle是没有insert all这种插入方式的。
对于mysql,那就很简单了,因为mysql本身是支持批量插入的:insert into t_table(…,…,…) values (…),(…),…