本文涉及:无
目录
背景
公司在excel导入导出选择了EasyExcel框架弥补poi大量占用内存的缺陷。
解决方案
继承监听器AnalysisEventListener抽象类需要实现invoke、doAfterAllAnalysed、onException三个接口。
invoke
/**
* When analysis one row trigger invoke function.
*
* @param data
* one row value. Is is same as {@link AnalysisContext#readRowHolder()}
* @param context
* analysis context
*/
void invoke(T data, AnalysisContext context);
invoke方法负责每一行解析后触发的函数,data是读取excel后转换的实体,context是整个上下文。
在这里我们我们可以对每一行导入数据进行校验。
doAfterAllAnalysed
/**
* if have something to do after all analysis
*
* @param context
*/
void doAfterAllAnalysed(AnalysisContext context);
doAfterAllAnalysed方法负责所有行数都结束后触发的函数。
在这里我们可以对已经解析完毕的数据进行批量导入。
关于使用Mybatis-plus批量导入saveBatch性能问题看这里
onException
/**
* All listeners receive this method when any one Listener does an error report. If an exception is thrown here, the
* entire read will terminate.
*
* @param exception
* @param context
* @throws Exception
*/
void onException(Exception exception, AnalysisContext context) throws Exception;
onException方法负责针对捕捉到异常的数据触发的函数。(如果在此抛出异常则停止读取)