1. 程式人生 > >mybatis 批量上傳

mybatis 批量上傳

groups param ati 執行 spring each 插入數據 values lec

新建實體類
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>




mybatis 批量上傳