[ERROR]-[Thread: qtp3391914-18]-[com.jfinal.core.ActionHandler.handle()]: /excelUpload/save
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Invalid argument value: java.io.NotSerializableExceptionat com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:534)
at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:544)
at com.jfinal.plugin.activerecord.Db.save(Db.java:378)
at com.jfinal.excelUpload.ExcelUploadController.save(ExcelUploadController.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55)
at com.jfinal.student.StudentInterceptor.intercept(StudentInterceptor.java:11)
at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:73)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:72)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:453)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1072)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:382)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1006)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:365)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: Invalid argument value: java.io.NotSerializableException
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.PreparedStatement.setSerializableObject(PreparedStatement.java:4375)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4019)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setObject(NewProxyPreparedStatement.java:365)
at com.jfinal.plugin.activerecord.dialect.Dialect.fillStatement(Dialect.java:68)
at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:514)
at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:532)
... 35 more
Caused by: java.io.NotSerializableException: org.apache.poi.xssf.usermodel.XSSFCell
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at com.mysql.jdbc.PreparedStatement.setSerializableObject(PreparedStatement.java:4364)
... 40 more
代码如下:
public void saveExcel() throws IOException {
UploadFile uploadFile = getFile("excelUpload",
"E:/eclipse/jfinal_orm_crud/WebRoot/file_home");
String realPath = "E:/eclipse/jfinal_orm_crud/WebRoot/file_home/";
String filePath = realPath + uploadFile.getFileName();
InputStream fis = new FileInputStream(filePath);
XSSFWorkbook workbook = new XSSFWorkbook(fis);
// XSSFSheet sheet = null;
// for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
// sheet = workbook.getSheetAt(i);
// for (int j = 1; j < sheet.getPhysicalNumberOfRows(); j++) {
// XSSFRow row = sheet.getRow(j);
// for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) {
// System.out.println(row.getCell(k) + "\t");
// }
// }
// }
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row = null;
List<Record> list = new ArrayList<Record>();
Map<Integer, Object> map = new HashMap<Integer, Object>();
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
int cols = row.getPhysicalNumberOfCells();
for (int j = 0; j < cols; j++) {
Cell cell = row.getCell(j);
map.put(j, cell);
}
Record user = new Record().set("userId", map.get(0))
.set("userName", map.get(1)).set("userGender", map.get(2))
.set("userAge", map.get(3)).set("userClass", map.get(4));
System.out.println(user);
Db.save("user", user);
list.add(user);
// new Test().set("stuId", map.get(0)).set("stuName", map.get(1))
// .set("stuGender", map.get(2)).set("stuAge", map.get(3))
// .set("stuClass", map.get(4)).save();
}
System.out.println(list);
render("upload.jsp");
}
IT新人欢迎指导和提出学习建议