//5.循环插入详情表
for (Map mapc : byFwc) {
UfSckgdDt1 ufSckgdDt1 = JSON.parseObject(JSON.toJSONString(mapc), UfSckgdDt1.class);
UfSckgdDt1List.add(ufSckgdDt1);
if(UfSckgdDt1List.size() % 1000 ==0){
int ii = ufSckgdDt1Mapper.insertUfSckgdDt1List(UfSckgdDt1List);
c=c+ii;
UfSckgdDt1List.clear();
}
//int ii = ufSckgdDt1Mapper.insertUfSckgdDt1(ufSckgdDt1);
}
// 最后插入剩余的数据
if(!CollectionUtils.isEmpty(UfSckgdDt1List)) {
int ii = ufSckgdDt1Mapper.insertUfSckgdDt1List(UfSckgdDt1List);
c=c+ii;
}
1000条插入一次,客根据自身运行环境更改。
dao层
public int insertUfSckgdDt1List(@Param("list") List<UfSckgdDt1> list);
mapper.xml
<insert id="insertUfSckgdDt1List" parameterType="java.util.List">
INSERT INTO uf_sckgd_dt1 ( id ,
mainid ,
dj ,
scfl ,
ppggxh ,
bz ,
jldw ,
scpm ,
sclb ,
mxid ,
scbm ,
xl ,
pp ,
htbh ,
ghsxx ,
scdl ,
scxl ,
tjlb ,
tjjldw ,
zhxs )
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id},
#{item.mainid},
#{item.dj},
#{item.scfl},
#{item.ppggxh},
#{item.bz},
#{item.jldw},
#{item.scpm},
#{item.sclb},
#{item.mxid},
#{item.scbm},
#{item.xl},
#{item.pp},
#{item.htbh},
#{item.ghsxx},
#{item.scdl},
#{item.scxl},
#{item.tjlb},
#{item.tjjldw},
#{item.zhxs})
</foreach >
</insert>
我本地机器比较次,不到3万运行了5秒,注意观察自己CPU使用率,我的结束20多秒才降下来。
注意批量插入froeach语句写法,容易出现param0参数绑定补上的错误。