mybatis 批量上传
新建实体类
BatchModel ins=new BatchModel();
//把实体类装list里
List<BatchModel> batchModel = new ArrayList<>();
for (int i = 0; i < arr.size(); i++) {
ArrayList<String> row = arr.get(i);
ins.setA(subFileName);
ins.setB(row.get(0));
ins.setC(row.get(1));
ins.setD(row.get(2));
ins.setE(row.get(3));
batchModel.add(ins);
给实体类赋值
)
由于一些数据库的SQL对执行的SQL长度有限制,所以使用foreach元素的时候需要预估对象的长度
int partsize=80;//每次的数量
int index=0;//第几条
int iflg=0;//到几条
int recordcont=batchModel.size();//获取总数量
//index<总数量 循环到需要的数量
for(;index<recordcont;index+=partsize){
iflg=(index+partsize)>=recordcont ? recordcont:(index+partsize);
programService.storagekufripackage(batchModel.subList(index,iflg));
}
if(recordcont-iflg>0){
programService.storagekufripackage(batchModel.subList(index,iflg)); //开始插入数据库
}
//我用的 spring boot// 加入 @Param("param")注解
void test(@Param("param") List<BatchModel> batchModels);
//mybatis 里是sql
<insert id="test" parameterType="com.cck.model.auxiliary.test">
insert into ods_groupstock_actual (
filenames, rowno, typeclass,
jan, feb, mar, apr,
may, jun, jul, aug,
sep, oct, nev, dec,
total, upload_user
)
values
<foreach collection="param" item="veh" separator=",">
(
#{veh.A},#{veh.P}, #{veh.B},
#{veh.C},#{veh.D}, #{veh.E}, #{veh.F},
#{veh.G},#{veh.H}, #{veh.I}, #{veh.J},
#{veh.K}, #{veh.L}, #{veh.M}, #{veh.N},
#{veh.O}, #{veh.Q}
)
</foreach>
</insert>