错误的信息如下: 通过百度查找说的原因都是mysql的版本问题,但是我按照那个改了并没有用,
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.BatchUpdateException: Incorrect integer value: 'æ�å·ž1' for column 'site_id' at row 1 at com.jfinal.plugin.activerecord.DbPro.batch(DbPro.java:1010) at com.jfinal.plugin.activerecord.Db.batch(Db.java:578) at com.ofsoft.cms.admin.controller.ComnController.uploadExcel(ComnController.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.jfinal.aop.Invocation.invoke(Invocation.java:73) at com.jfinal.core.ActionHandler.handle(ActionHandler.java:82) at com.ofsoft.cms.core.handler.WebSocketHandler.handle(WebSocketHandler.java:14) at com.jfinal.plugin.druid.DruidStatViewHandler.handle(DruidStatViewHandler.java:75) at com.ofsoft.cms.core.handler.ActionHandler.handle(ActionHandler.java:44) at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:73)
我的java代码:
批量的时候报错, 单条的时候正常插入, 请问一下这个什么原因
public void uploadExcel() { try { String date = DateUtils.getCurrentStr(DateUtils.DATE_PATTERN) ; //获取文件 String _flag = getPara("_flag") ; UploadFile file = this.getFile("file", "/excel/up/" + date +"/"); file.getFile().createNewFile(); //解析excel List<Record> ret = ImportExcelUntil.importExcel(file.getFile(), arrMap.get(_flag.split(",")[0]), getRepMap(_flag)); //获取插入sql语句 String insertSql = Db.getSqlPara("cms.salesLevel.save", new HashMap<>()).getSql(); //执行插入-批量的时候报错 Db.batch(insertSql, getColumns(_flag), ret.subList(0, 1), 1); //单条的时候正常插入, // Db.save("of_cms_sales_level", ret.get(0)); Map<String, Object> data = new HashMap<String, Object>(); data.put("filePath", "/upload/excel/up/" + date +"/"+ file.getFileName()); data.put("fileName", file.getFileName()); rendSuccessJson(data); } catch (Exception e) { e.printStackTrace(); rendFailedJson(ErrorCode.get("9999")); } }
项目:JFinal
例如 sql 中要求两个参数都为 int:
insert into xxx ? , ?
假定你一共插入 10 条数据,其中有 9 条数的参数都没问题,但有一条数据的参数,其中一个参数不是 int , 而是别的类型,这就出错了
简单一句话, Db.batch 中的那条 sql , 要可以单独与每组参数配合着用