本文涉及:無
目錄
背景
公司在excel導入導出選擇了EasyExcel框架彌補poi大量占用內(nèi)存的缺陷。
解決方案
繼承監(jiān)聽器AnalysisEventListener抽象類需要實現(xiàn)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方法負責每一行解析后觸發(fā)的函數(shù)导犹,data是讀取excel后轉(zhuǎn)換的實體,context是整個上下文陌宿。
在這里我們我們可以對每一行導入數(shù)據(jù)進行校驗。
doAfterAllAnalysed
/**
* if have something to do after all analysis
*
* @param context
*/
void doAfterAllAnalysed(AnalysisContext context);
doAfterAllAnalysed方法負責所有行數(shù)都結(jié)束后觸發(fā)的函數(shù)波丰。
在這里我們可以對已經(jīng)解析完畢的數(shù)據(jù)進行批量導入壳坪。
關(guān)于使用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方法負責針對捕捉到異常的數(shù)據(jù)觸發(fā)的函數(shù)。(如果在此拋出異常則停止讀汝獭)