最新动态
利用Mybatis的resultHandler和POI,实现超大数据量导出到EXCEL。
2024-10-31 22:03

采用Mybatis持久化框架,查询数据采用List模式返回结果,这种数据返回模式,能满足大多数的在少量返回结果集,或分页结果集的应用场景。

利用Mybatis的resultHandler和POI,实现超大数据量导出到EXCEL。

针对要大量返回结果集,特别是需要把超大查询结果集返回或导出的时候,List模式由于需要在应用服务器中构造对象。这不但需要消耗大量内存,而且会引起频繁的垃圾回收,造成性能降低。甚至因为内存无法容纳过大的结果集List,造成OOM异常。

有人采用分页模式,逐页导出的方式来解决。这种解决方式,针对超大结果集,比如数百万数据行时,由于可能会产生上万个分页查询,造成数据库上万次查询,给数据库性能带来灾难性影响。

本文档采用Mybatis的ResultHandler接口,采用ResultHandler回调模式,实现逐条处理,既实现一次查询获得所有数据,不引起数据库性能灾难,又避免应用服务器内存过大消耗的问题。

下面直接上实现代码。

1.依赖的包引入

   

2.超大数据集导出EXCEL工具类ExcelGenerator,本类实现了ResultHandler,通过回调,逐条导出。具体代码

 


3.使用方法

定义使用ResultHandler的Mapper方法。


 

4.导出数据例子


   

 到此,你就可以照此开发超大规模数据的导出了。你不但可以导出几百几千的,你甚至可以导出上亿的。只是这个EXCEL太大了,你的OFFICE是否能打开就不知道。

5.写在后面

    以上就是本篇文章【利用Mybatis的resultHandler和POI,实现超大数据量导出到EXCEL。】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/4224.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多