mybatis流式导出大数据excel

您所在的位置:网站首页 mybatis查询内存溢出 mybatis流式导出大数据excel

mybatis流式导出大数据excel

2024-07-15 08:44| 来源: 网络整理| 查看: 265

void selectStream(Vo vo,ResultHandler resultHandler);

mapper.java代码

select * from table1

mapper.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