eazyexcel 讀取excel資料插入資料庫
1 寫監聽器
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.ynsy.outhospital.entity.Area; import com.ynsy.outhospital.service.AreaService; import com.ynsy.wenku.service.VideoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Date; import java.util.List; /*** * 監聽器 */ public class ExcelModelListener extends AnalysisEventListener<ExcelMode> { // 注入為null @Autowired private AreaService areaService; /** * 每隔5條儲存資料庫,實際使用中可以3000條,然後清理list ,方便記憶體回收 */ private static final int BATCH_COUNT = 5; private static List<ExcelMode> list = new ArrayList<ExcelMode>(); private static int count = 1; @Override public void invoke(ExcelMode data, AnalysisContext context) { System.out.println("解析到一條資料:{ " + data.toString() + " }"); list.add(data); count++; if (list.size() >= BATCH_COUNT) { saveData(count); list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext context) { saveData(count); System.out.println("所有資料解析完成!"); System.out.println(" count :" + count); } /** * 加上儲存資料庫 */ private void saveData(int count) { System.out.println("{ " + count + " }條資料,開始儲存資料庫!" + list.size()); System.out.println("儲存資料庫成功!"); List<Area> list2 = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { ExcelMode excelMode = list.get(i); Area area = new Area(); area.setId((long) Integer.parseInt(excelMode.getId())); area.setAreaName(excelMode.getArea_name()); area.setParentId((long) Integer.parseInt(excelMode.getParent_id())); area.setLeve((long) Integer.parseInt(excelMode.getLevel())); area.setAreaCode(excelMode.getArea_code()); area.setParentCode(excelMode.getParent_code()); area.setCreateTime(new Date()); area.setCreateUserId("1"); area.setCreateUserName("admin"); area.setUpdateTime(new Date()); area.setUpdateUserId("1"); area.setUpdateUserName("admin"); area.setIsDelete(0L); list2.add(area); } //Object areaService = SpringContextUtil.getBean("areaService"); //沒有該bean AreaService areaServiceImpl = (AreaService)SpringContextUtil.getBean("areaServiceImpl"); Object contorller = SpringContextUtil.getBean("areaController"); areaServiceImpl.saveBatch(list2); } }
2 生產實體類,通用mapper
3 使用SpringContextUtil,讀取service的例項,主要預設bean名字為 areaServiceImpl 或者 areaController
import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; // Spring應用上下文環境 // 下面的這個方法上加了@Override註解,原因是繼承ApplicationContextAware介面是必須實現的方法 @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtil.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } public static Object getBean(String name) throws BeansException { return applicationContext.getBean(name); } public static Object getBean(String name, Class requiredType) throws BeansException { return applicationContext.getBean(name, requiredType); } public static boolean containsBean(String name) { return applicationContext.containsBean(name); } public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { return applicationContext.isSingleton(name); } public static Class getType(String name) throws NoSuchBeanDefinitionException { return applicationContext.getType(name); } public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { return applicationContext.getAliases(name); } }
4 設定插入資料的值,全部設定有值,否則報錯
解決辦法:全部設定預設值
5 測試讀取插入資料庫:3700條資料耗時3秒
相關文章
- java poi讀取Excel資料 插入到SQL SERVER資料庫中JavaExcelSQLServer資料庫
- excel 資料讀取Excel
- PHPExcel讀取excel資料PHPExcel
- 使用openpyxl庫讀取Excel檔案資料Excel
- POI 分批讀取Excel資料Excel
- Excel上傳並讀取資料Excel
- QTP讀取Excel資料的方法QTExcel
- hutool分批次讀取excel資料Excel
- 利用反射讀取資料庫資料反射資料庫
- sqlserver讀取oracle資料庫資料SQLServerOracle資料庫
- POI 使用SAX讀取大資料Excel大資料Excel
- php 讀取excel中的內容到mysql 資料庫PHPExcelMySql資料庫
- EasyExcel庫來讀取指定Excel檔案中的資料Excel
- Python 利用pymysql和openpyxl操作MySQL資料庫並插入Excel資料PythonMySql資料庫Excel
- mongodb資料庫中插入資料MongoDB資料庫
- MySQL 資料庫表格建立、資料插入及獲取插入的 ID:Python 教程MySql資料庫Python
- python讀取excel所有資料(cmd介面)PythonExcel
- 用Python讀取excel中的資料PythonExcel
- ColdFusion向資料庫插入資料例子資料庫
- ajax讀取資料庫資料程式碼例項資料庫
- proc插入資料到資料庫資料庫
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 求救:關於讀取excel資料的問題Excel
- python如何將資料插入資料庫Python資料庫
- Kettle 從資料庫讀取資料存到變數中資料庫變數
- 12 可插入資料庫資料庫
- mybatis插入資料、批量插入資料MyBatis
- 讀取mysq資料庫l資料,並使用dataview顯示資料庫View
- 【python介面自動化】- openpyxl讀取excel資料PythonExcel
- 使用Java通過POI讀取EXCEL中的資料JavaExcel
- python資料插入連線MySQL資料庫PythonMySql資料庫
- sqlite建立本地資料庫並插入資料SQLite資料庫
- 如何將 EXCEL 資料寫入資料庫Excel資料庫
- python pandas庫讀取excel/csv中指定行或列資料詳解PythonExcel
- 讀取CSV資料
- 分庫分表插入資料
- python運算元據庫,批量插入資料庫資料Python資料庫
- excel-Spreadsheets:讀取Excel電子表格資料的Java原始碼ExcelJava原始碼