mybatis流式导出大数据excel |
您所在的位置:网站首页 › mybatis查询内存溢出 › mybatis流式导出大数据excel |
void selectStream(Vo vo,ResultHandler resultHandler);
mapper.java代码 select * from table1mapper.xml代码 resultSetType="FORWARD_ONLY" fetchSize="-2147483648" 额外添加的 详情参考这个 https://orchidflower.gitee.io/2018/06/15/Solving-OutOfMemoryException-Happened-when-Exporting-Excel-using-POI-in-Spring-Part2/导出excel代码使用easyexcel response.setCharacterEncoding("utf8"); response.setContentType("application/vnd.ms-excel;charset=utf-8"); String fileName = URLEncoder.encode("test.xlsx", "UTF-8"); //文件名 response.setHeader("Content-Disposition", "attachment; filename=" + fileName ); response.setHeader("Cache-Control", "no-store"); response.addHeader("Cache-Control", "max-age=0"); ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), Vo.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("sheet").build(); tEquInfoMapper.selectStream(vo, resultContext -> { Vo vo = resultContext.getResultObject(); try{ List list = new ArrayList(); list.add(vo); excelWriter.write(list, writeSheet); }catch (Exception e){ e.printStackTrace(); } }); excelWriter.finish();ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), Vo.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("sheet").build(); 需要获取一个新的WriteSheet对象 不能从EasyExcel.write(response.getOutputStream(), Vo.class).sheet("test").build()获取,不然导出的个空的excel。 excelWriter.write一直写数据,最后执行finish进行响应
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |