controller:
/**
* 上传导入数据
*
* @param
* @throws Exception
*/
@RequestMapping(value = "/daoru", produces = "application/json;charset=UTF-8")
@ResponseBody
public Object daoru() throws Exception {
logBefore(logger, Jurisdiction.getUsername() + "导入Dangwaidaibiaorenshishuju");
Map<String, Object> map = new HashMap<String, Object>();PageData pd = new PageData();
pd = this.getPageData();
if (!Jurisdiction.buttonJurisdiction(menuUrl, "add")) {
map.put("result", "没有权限");
return AppUtil.returnObject(pd, map);
} // 校验权限
String filePath = PathUtil.getClasspath();
String filename = pd.getString("filename");
File target = new File(filePath, filename);
FileInputStream fi = new FileInputStream(target);
XSSFWorkbook wb = new XSSFWorkbook(fi);
//HSSFWorkbook wb = new HSSFWorkbook(fi);
List<PageData> listPd = (List<PageData>) ObjectExcelRead
.readExcelStrings(filePath, filename, 1, 0, 0); // 执行读EXCEL操作,读出的数据导入List(这个方法没写)
// 2:从第4行开始;0:从第A列开始;0:第0个sheet
ProgressSingleton.put("总数", listPd.size());
/* 存入数据库操作====================================== */
//Calendar 现在 = Calendar.getInstance();
pd.put("CREAT_TIME", Tools.date2Str(new Date()));//创建时间
//pd.put("ACTIVATION_TIME", "");//激活
pd.put("SPRAY_COORD_ID", pd.getString("coordid"));
pd.put("SPRAY_GROUP_ID", pd.getString("groupid"));
/**
* Excel文件中的列(从左到右) var0:设备编号 var1 :名称 var2 :卡号 var3 :数量 var4 :地址 var5 :状态
* var6:通信编号 var7:设备备注 var8:经度 var9:纬度 var10:最大数值
* var11:最小数值 var12:类型备注 var13:顺序 var14:开关 var15:类型ID
*
*/
PageData ppd = new PageData();
PageData num = new PageData();
List<PageData> enddeviceList = new ArrayList();
List<PageData> detailtypeenList = new ArrayList();
for (int i = 0; i < listPd.size(); i++) {
String bianhao =listPd.get(i).getString("var0");
String bianhao1 = ppd.getString("bianhao");
if(!bianhao.equals(bianhao1)){
pd.put("NAME", listPd.get(i).getString("var1"));
pd.put("CARDNUM", listPd.get(i).getString("var2"));
pd.put("NUM", listPd.get(i).getString("var3"));
pd.put("ADDR", listPd.get(i).get("var4"));
pd.put("STS", listPd.get(i).get("var5"));
pd.put("SOCKETID", listPd.get(i).get("var6"));
pd.put("REMARK", listPd.get(i).get("var7"));
pd.put("LONGITUDE", listPd.get(i).get("var8"));
pd.put("LATITUDE", listPd.get(i).get("var9"));
enddeviceList.add(pd);
//enddeviceService.save(pd);
ppd.put("bianhao",listPd.get(i).getString("var0"));
//获取最新的ID,不利于高并发使用(同时多人导入)
num = enddeviceService.findByZ(null);
//如果数据表为空时,直接退出
if(null == num){
return AppUtil.returnObject(pd, map);
}
}
String num1 = String.valueOf(num.get("Z"));
//pd.put("ID", listPd.get(i).get("var2"));//zi
pd.put("MAXNUM", listPd.get(i).getString("var10"));
pd.put("MINNUM", listPd.get(i).getString("var11"));
pd.put("REMARK", listPd.get(i).get("var12"));
pd.put("SPRAY_ENDDEVICE_ID", Integer.parseInt(num1));
pd.put("SPRAY_DETAILTYPE_ID", listPd.get(i).get("var15"));
pd.put("SPRAY_ENDDEVICE_NUM", listPd.get(i).get("var2"));
pd.put("LINE", listPd.get(i).get("var13"));
pd.put("OP", listPd.get(i).get("var14"));
detailtypeenList.add(pd);
//detailtypeenService.save(pd);
if (enddeviceList.size() == 1000){
enddeviceService.saves(enddeviceList);
enddeviceList.clear();
}
if (detailtypeenList.size() == 1000){
detailtypeenService.saves(detailtypeenList);
detailtypeenList.clear();
}
ProgressSingleton.put("第几条", i + 1);
}
enddeviceService.saves(enddeviceList);
detailtypeenService.saves(detailtypeenList);
map.put("zongshu", listPd.size());
// 结束导入
FileUtil.delFile(filePath + File.separator + filename);// 删除上传的文件
map.put("result", "完成");
return AppUtil.returnObject(pd, map);
}
service:
public void saves(List list)throws Exception{
dao.save("EnddeviceMapper.saves", list);
}
manager:
public void saves(List list)throws Exception;
xml:
<insert id="saves" parameterType="java.util.List">
insert into
<include refid="tableName"></include>
(
MAXNUM,
MINNUM,
REMARK,
SPRAY_ENDDEVIC_ID,
SPRAY_DETAILTYP_ID,
SPRAY_ENDDEVCE_NUM,
LINE,
OP
) values
<foreach item="item" index="index" collection="collection" separator=",">
(
#{item.MAXNUM},
#{item.MINNUM},
#{item.REMARK},
#{item.SPRAY_ENDDEVICE_ID},
#{item.SPRAY_DETAILTYPE_ID},
#{item.SPRAY_ENDDEVICE_NUM},
#{item.LINE},
#{item.OP}
)
</foreach>
</insert>
百度了一下:上限是1000条,但是本位未测试过