千家信息网

MyBatis大数据量流式数据查询、数据导出的方法

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"MyBatis大数据量流式数据查询、数据导出的方法",在日常操作中,相信很多人在MyBatis大数据量流式数据查询、数据导出的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的
千家信息网最后更新 2024年09月22日MyBatis大数据量流式数据查询、数据导出的方法

这篇文章主要介绍"MyBatis大数据量流式数据查询、数据导出的方法",在日常操作中,相信很多人在MyBatis大数据量流式数据查询、数据导出的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"MyBatis大数据量流式数据查询、数据导出的方法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

如果需要导出大数据量到文件中,一次性查询百万或者千万以上数据到内存,可能会导致JVM直接内存溢出崩溃。即使不崩溃,也会导致JVM频繁GC,验证影响速度与稳定性!

因此采用流式导出,一边查询一边向文件写入。

以导出excel为例:

  1. 数据读取:

public File exportExcel(Integer userId) {    excel=openExcel();        locationViewDao.getListForExcel(userId, new ResultHandler() {                @Override                public void handleResult(ResultContext resultContext) {                        ListForExcelMap row = resultContext.getResultObject();                        excel.append(row);                }        });        return excel.build();}
  1. DAO定义:

void getListForExcel(@Param("userId")Integer userId, ResultHandler handler);

注意: 返回一定得是void,并且参数里一定有ResultHandler,这样MyBatis才会认为是流式查询

  1. Mapper定义: