背景:在list中存放对象,本来可以遍历list得到每一个对象,然后将每个对象插入数据库,但是这样做的话没遍历得到一个对象就要操作一次数据库,如果数据少的话还好,如果是成千上万的数据,就会使开销大大增加和性能大大降低,为了解决这个,就需要将之前的每次插入换成批量插入
直接上sql
<insert id="insertData" parameterType="java.util.List" >
insert into JK_MATNRDTL_FROM_SRM (ID,
RUNSHEET_DETAIL_ID, ASN_NO, RUNSHEET_DETAIL_NO, PART_NO, MEASURING_UNIT_NO,
ISEMERGENCY, CZFLAG, ZSIGN, BATTH_NO, REQUIRED_INHOUSE_PACKAGE_QTY,
ORDER_NO, ITEM_NO, POTYPE, PACKAGE_STYLE, PACKAGE_TYPE,
PACKAGE_COUNT, LGORT
)
SELECT seq_jk_matnrdtl_from_srm.NEXTVAL id, A.*
FROM(
<foreach collection="list" item="item" index="index" separator="UNION ALL" >
select
#{item.RUNSHEET_DETAIL_ID},#{item.ASN_NO},#{item.RUNSHEET_DETAIL_NO},#{item.PART_NO},#{item.MEASURING_UNIT_NO},