iBatis中RowHandler处理大数据量的导出
背景:一次性导出几十万条数据到excel,此时的导出效率会严重损失。
解决方法: 用ibatis中的RowHandler,一次只处理一条数据,内存中只保持一条数据,导出时每5万条创建一个sheet
具体实现方法:
MyRowHandler处理类:
public String execute(){String fileName="F:\\05-JAVA\\测试.xls";HSSFWorkbook wb = new HSSFWorkbook();MyRowHandler handler = new MyRowHandler();handler.setWb(wb);DaoFactory.getIbatisDao().getSqlMapClientTemplate().queryWithRowHandler("term.base", handler);wb = handler.getWb();OutputStream os = null;try {os = new FileOutputStream(fileName);wb.write(os);}catch(Exception e){}finally{try {os.close();} catch (IOException e) {e.printStackTrace();} } ?return "success";}