精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot+Mybatis-plus整合EasyExcel批量導(dǎo)入Excel到數(shù)據(jù)庫(kù)+導(dǎo)出Excel

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
今天小編帶大家一起整合一下EasyExcel,之所以用這個(gè),是因?yàn)镋asyExcel性能比較好,不會(huì)報(bào)OOM!

一、前言

今天小編帶大家一起整合一下easyExcel?,之所以用這個(gè),是因?yàn)閑asyExcel?性能比較好,不會(huì)報(bào)OOM!

市面上常見(jiàn)的導(dǎo)入導(dǎo)出Excel分為三種:

  • hutool
  • easyExcel
  • poi

hutool和easyExcel?都是對(duì)poi?的封裝,使用起來(lái)更加方便!

二、導(dǎo)入依賴(lài)

小編這里是3.0.X版本的,版本不同可能導(dǎo)致部分有出入,如果大家版本是3.1.X,可以去官方文檔看看有不一樣的!

官方文檔:https://easyexcel.opensource.alibaba.com/

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>

三、實(shí)體類(lèi)

這里可以自帶的轉(zhuǎn)換器:

  • @DateTimeFormat("yyyy年MM月dd日HH時(shí)mm分ss秒")
  • LocalDateTimeStringConverter

或者自定義轉(zhuǎn)化器:實(shí)現(xiàn):implements Converter<T>。

具體文檔:官方文檔:https://easyexcel.opensource.alibaba.com/docs/3.0.x/quickstart/read#%E6%97%A5%E6%9C%9F%E6%95%B0%E5%AD%97%E6%88%96%E8%80%85%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2

@ExcelProperty參數(shù)注意:

這里不建議 index 和 name 同時(shí)用,要么一個(gè)對(duì)象只用index,要么一個(gè)對(duì)象只用name去匹配。

用名字去匹配,這里需要注意,如果名字重復(fù),會(huì)導(dǎo)致只有一個(gè)字段讀取到數(shù)據(jù)。

/**
* @author wangzhenjun
* @date 2022/12/2 15:52
*/
@Data
public class Test {

@TableId
private Integer id;
@ExcelProperty(index = 0)
private String name;
@ExcelProperty(index = 1)
private Integer age;
@ExcelProperty(index = 2,converter = LocalDateTimeStringConverter.class)
private LocalDateTime time;
}

四、編寫(xiě)監(jiān)聽(tīng)器

注意點(diǎn):這個(gè)監(jiān)聽(tīng)器一定不要是單例的,被spring管理默認(rèn)為單例,如果要使用?@Component?,一定要加上:@Scope("prototype")?,這樣在創(chuàng)建完后spring不會(huì)進(jìn)行管理,每次都會(huì)是新bean!不加?@Component?在導(dǎo)入時(shí)要進(jìn)行new ImportDataListener!小編這里不想new了直接這樣寫(xiě)!!如果不想這樣,可以使用構(gòu)造器set進(jìn)行使用!BATCH_COUNT?:數(shù)據(jù)閾值,超過(guò)了就會(huì)清理list,在之前可以進(jìn)行保存到數(shù)據(jù)庫(kù)中,方便內(nèi)存回收,防治OOM!這里保存到數(shù)據(jù)庫(kù)中一般使用?批量保存,不要解析到一行就去保存數(shù)據(jù)庫(kù)中,這樣數(shù)據(jù)量大會(huì)給數(shù)據(jù)庫(kù)增加IO,導(dǎo)致掛掉!這里小編使用ServiceImpl的saveBatch()方法,也可以自己寫(xiě)一下,像小編這樣寫(xiě),會(huì)出現(xiàn)循環(huán)依賴(lài),加上@Lazy就行!

/**
* @author wangzhenjun
* @date 2022/12/2 15:38
*/
@Slf4j
@Component
// 每次bean都是新的,不要單例
@Scope("prototype")
public class ImportDataListener implements ReadListener<Test> {

@Autowired
@Lazy
private TestService testService;

/**
* 每隔5條存儲(chǔ)數(shù)據(jù)庫(kù),實(shí)際使用中可以100條,然后清理list ,方便內(nèi)存回收
*/
private static final int BATCH_COUNT = 100;
/**
* 緩存的數(shù)據(jù)
*/
private List<Test> importExcelDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);


/**
* 這個(gè)每一條數(shù)據(jù)解析都會(huì)來(lái)調(diào)用
*
* @param data one row value. Is is same as {@link AnalysisContext#readRowHolder()}
* @param context
*/
@Override
public void invoke(Test data, AnalysisContext context) {
log.info("解析到一條數(shù)據(jù):{}", JSON.toJSONString(data));
importExcelDataList.add(data);
// 達(dá)到BATCH_COUNT了,需要去存儲(chǔ)一次數(shù)據(jù)庫(kù),防止數(shù)據(jù)幾萬(wàn)條數(shù)據(jù)在內(nèi)存,容易OOM
if (importExcelDataList.size() >= BATCH_COUNT) {
saveData();
// 存儲(chǔ)完成清理 list
importExcelDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}

/**
* 所有數(shù)據(jù)解析完成了 都會(huì)來(lái)調(diào)用
*
* @param context
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 這里也要保存數(shù)據(jù),確保最后遺留的數(shù)據(jù)也存儲(chǔ)到數(shù)據(jù)庫(kù)
saveData();
log.info("所有數(shù)據(jù)解析完成!");
}

/**
* 加上存儲(chǔ)數(shù)據(jù)庫(kù)
*/
private void saveData() {
log.info("{}條數(shù)據(jù),開(kāi)始存儲(chǔ)數(shù)據(jù)庫(kù)!", importExcelDataList.size());
testService.saveBatch(importExcelDataList);
log.info("存儲(chǔ)數(shù)據(jù)庫(kù)成功!");
}
}

五、Controller

/**
* @author wangzhenjun
* @date 2022/10/26 16:51
*/
@Slf4j
@RestController
@RequestMapping("/test")
public class TestController {

@Autowired
private TestService testService;

@PostMapping("/import")
public Result importExcel(@RequestBody MultipartFile multipartFile){
testService.importExcel(multipartFile);
return Result.success("ok");
}
}

六、Service

/**
* @author wangzhenjun
* @date 2022/10/26 16:55
*/
public interface TestService extends IService<Test> {
void importExcel(MultipartFile multipartFile);
}

七、ServiceImpl

/**
* @author wangzhenjun
* @date 2022/10/26 16:56
*/
@Service
public class TestServiceImpl extends ServiceImpl<TestDbMapper, Test> implements TestService{

@Autowired
private ImportDataListener importDataListener;

@SneakyThrows
@Override
public void importExcel(MultipartFile multipartFile) {
InputStream inputStream = multipartFile.getInputStream();
// 這里 需要指定讀用哪個(gè)class去讀,然后讀取第一個(gè)sheet 文件流會(huì)自動(dòng)關(guān)閉
EasyExcel.read(inputStream, Test.class, importDataListener).sheet().doRead();
}
}

八、Mapper

/**
* @author wangzhenjun
* @date 2022/10/26 17:07
*/
public interface TestDbMapper extends BaseMapper<Test> {
}

九、測(cè)試

準(zhǔn)備Excel數(shù)據(jù):

圖片

postman上傳:

圖片

控制臺(tái)打印:

圖片

數(shù)據(jù)庫(kù)查看:

圖片

完美搞定!!

十、總結(jié)

這樣就完成了easyExcel批量導(dǎo)入Excel到數(shù)據(jù)庫(kù),還是有很多要注意的點(diǎn):

  • 自定義轉(zhuǎn)換器
  • 監(jiān)聽(tīng)器不要單例
  • 保存數(shù)據(jù)庫(kù)采用批量
  • 版本差距
責(zé)任編輯:姜華 來(lái)源: 小王博客基地
相關(guān)推薦

2010-07-21 14:17:36

SQL Server數(shù)

2011-03-10 10:50:01

excelsql數(shù)據(jù)庫(kù)

2010-04-22 11:58:00

Oracle數(shù)據(jù)庫(kù)

2022-09-29 10:06:56

SQLMySQL服務(wù)端

2023-06-07 08:08:37

MybatisSpringBoot

2025-08-26 03:00:00

Excel技巧數(shù)據(jù)

2024-04-09 13:20:00

Excel數(shù)據(jù)庫(kù)數(shù)據(jù)

2020-12-18 10:40:00

ExcelJava代碼

2023-09-20 10:04:04

Python工具

2022-05-11 09:02:27

Python數(shù)據(jù)庫(kù)Excel

2011-03-24 16:46:44

微軟Excel數(shù)據(jù)庫(kù)

2021-09-27 07:56:41

MyBatis Plu數(shù)據(jù)庫(kù)批量插入

2021-11-04 10:45:46

SpringBootExcelJava

2009-07-28 11:00:24

Excel導(dǎo)入SQL

2010-04-14 09:24:29

在Oracle數(shù)據(jù)庫(kù)

2011-03-01 14:52:31

EXCEL財(cái)務(wù)分析?數(shù)據(jù)庫(kù)

2009-08-11 14:51:47

C#讀取Excel中數(shù)

2011-04-15 10:37:53

Oracle導(dǎo)入導(dǎo)出語(yǔ)法

2010-11-09 17:19:49

SQL Server導(dǎo)

2011-04-13 09:03:58

Oracle數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品久久久久久无码中文野结衣| 国产精品美乳在线观看| 91丨porny丨对白| 成人av三级| 国产精品久久久久久久久晋中| 国产精品一区专区欧美日韩| 91高清免费观看| 红杏一区二区三区| 在线观看www91| 欧美做暖暖视频| 精品999视频| 国产精品白丝jk白祙喷水网站| 国模吧一区二区三区| 波多野在线播放| 涩涩屋成人免费视频软件| 天天综合天天综合色| 日韩国产精品一区二区| 国产黄色av片| 蜜桃久久av一区| 国内精品视频在线| 精品国产大片大片大片| 国产精品videossex| 欧美日韩精品一二三区| 国产日韩av网站| 九色porny丨首页在线| 99久久国产综合精品色伊| 国产欧美久久久久久| 色播视频在线播放| 91精品国产福利在线观看麻豆| 亚洲精品电影网站| 精品久久久99| 成人软件在线观看| 亚洲第一搞黄网站| 一本大道东京热无码aⅴ| 国产在线视频资源| 91网站黄www| 成人资源av| 国产欧美第一页| 日韩精品电影一区亚洲| 午夜精品一区二区三区在线播放 | 在线日韩欧美视频| 久久国产精品无码一级毛片| 99a精品视频在线观看| 欧美巨大另类极品videosbest | 日韩有码在线电影| 国产毛片欧美毛片久久久| 卡通动漫国产精品| 精品少妇一区二区三区在线视频| 五月激情婷婷在线| av久久网站| 欧洲精品一区二区三区在线观看| 大肉大捧一进一出好爽视频| a级片免费在线观看| 亚洲综合一区二区| 中文字幕日韩精品无码内射| a毛片在线播放| 一区二区三区四区视频精品免费| 在线国产99| av片在线观看网站| 1024亚洲合集| 久久久一二三四| 黄色av免费在线| 亚洲手机成人高清视频| 日韩国产精品毛片| 午夜成年人在线免费视频| 亚洲精品国产一区二区精华液| 综合色婷婷一区二区亚洲欧美国产| 最新国产在线观看| 国产精品久久久久影院色老大| 日韩精品国内| 欧美精品电影| 亚洲最大色网站| 国产午夜福利在线播放| 丝袜老师在线| 欧美日免费三级在线| 在线观看的毛片| **日韩最新| 日韩欧美在线一区二区三区| 欧美大喷水吹潮合集在线观看| 欧美绝顶高潮抽搐喷水合集| 亚洲桃花岛网站| 一级免费黄色录像| 国产精品啊v在线| 欧美一级bbbbb性bbbb喷潮片| 91精品国产乱码久久久张津瑜| 91久久亚洲| 国产精品成久久久久三级| 又污又黄的网站| 丁香婷婷综合网| 欧美精彩一区二区三区| 日本不卡不卡| 精品久久久久久久久中文字幕| 成人精品视频一区二区| 99热这里有精品| 亚洲黄色av女优在线观看 | 中文字幕一区av| 隔壁人妻偷人bd中字| 在线成人av观看| 欧美伦理视频网站| 精品无码在线视频| 国产精品久久久久无码av| 精品少妇v888av| 久久久精品视频网站| 狠狠网亚洲精品| 久久艹中文字幕| 蜜桃视频网站在线观看| 精品久久中文字幕| 蜜臀一区二区三区精品免费视频| gogo人体一区| 日韩亚洲第一页| 亚洲精品www久久久久久| 毛片av一区二区| 国产精品一区二区三区四区五区 | 国产日韩三级在线| 17c丨国产丨精品视频| 欧美在线va视频| 亚洲第一免费播放区| 国产探花视频在线| 亚洲精品激情| 亚洲最大福利网站| 91在线播放网站| 精品国产31久久久久久| 国产精品久久久久久久99| 欧美日韩国产免费观看视频| 欧美极品少妇xxxxⅹ喷水| 亚洲精品国产无码| 99国产精品久久久久久久久久久| 中文精品视频一区二区在线观看| 日本不卡一二三| 亚洲成人黄色在线| 成年人一级黄色片| 免费在线欧美视频| 蜜桃麻豆91| 成人免费观看在线观看| 欧美一卡二卡三卡| 一级免费黄色录像| 奇米888四色在线精品| 鲁片一区二区三区| 麻豆视频在线看| 亚洲第一网站男人都懂| 国产性生活网站| 国产传媒欧美日韩成人| 18视频在线观看娇喘| 国产精品99| 一区二区三区精品99久久| 中文字幕视频网| 99re成人在线| 浮妇高潮喷白浆视频| 国产精品自在线拍| 久久久欧美精品| 国产综合在线播放| 亚洲国产一区视频| 中文字幕在线视频播放| 99精品国产在热久久下载| 高清不卡一区二区三区| 丝袜综合欧美| 欧美精品一区二区三区视频 | 欧美日韩一区二区在线播放| 午夜剧场免费看| 国产欧美日韩亚洲一区二区三区| 国产欧美日韩综合一区在线观看| 午夜羞羞小视频在线观看| 精品免费视频一区二区| 日韩精品视频免费看| av电影在线观看一区| 97成人在线观看视频| 蜜桃成人av| 国产精品久久久久久久av大片 | 中文字幕精品一区| 色一情一区二区| 亚洲经典一区| 国产嫩草一区二区三区在线观看| xxxx视频在线| 亚洲欧美999| 一级成人免费视频| 亚洲免费在线播放| 午夜不卡久久精品无码免费| 国产精品亚洲欧美| 秋霞毛片久久久久久久久| 久久人人视频| 欧美激情精品久久久久| 日韩一级片免费| 在线视频国内自拍亚洲视频| 中文日韩电影网站| 99久久婷婷国产综合| 国产69精品久久99不卡| 少妇高潮喷水在线观看| 亚洲午夜久久| 91久久久久久久久| xxx在线免费观看| 一区二区三区日韩在线| 精品人妻一区二区三区换脸明星 | 亚洲色图第三页| 97成人免费视频| 婷婷中文字幕一区三区| 欧美成人短视频| 成人午夜激情在线| www.色偷偷.com| 好看的日韩av电影| 日韩一本精品| 国内自拍欧美| 国产综合香蕉五月婷在线| 黄色在线观看www| 久久精品视频亚洲| 免费在线稳定资源站| 日韩一区二区三区高清免费看看| 91video| 亚洲色图制服诱惑| 中文字幕高清视频| 成人免费精品视频| 婷婷免费在线观看| 亚洲综合精品四区| 免费看日本黄色| 欧美a级片视频| 牛人盗摄一区二区三区视频| 国产电影一区二区| 国产成人激情视频| 漫画在线观看av| 欧美疯狂xxxx大交乱88av| 黄色av网站在线看| 亚洲福利视频久久| 国产jzjzjz丝袜老师水多| 在线观看www91| 五月婷婷亚洲综合| 亚洲第一福利视频在线| 久久高清内射无套| 国产精品拍天天在线| 波多野结衣福利| 94色蜜桃网一区二区三区| 精品人妻一区二区三| 蜜臀av在线播放一区二区三区| 青青草精品视频在线| 欧美精品午夜| 黄黄视频在线观看| 欧美电影《睫毛膏》| 日本一区视频在线观看| 亚欧日韩另类中文欧美| 成人欧美一区二区三区视频xxx| 青娱乐极品盛宴一区二区| 日韩免费观看网站| 中文字幕在线直播| 91高潮精品免费porn| √天堂8资源中文在线| 欧美丰满老妇厨房牲生活 | 高清欧美性猛交xxxx| 18加网站在线| 欧美精品亚州精品| 成人看av片| 美日韩在线视频| 新版中文在线官网| 欧美国产亚洲精品久久久8v| 超碰在线网址| 久国内精品在线| 日本无删减在线| 久久久久国产视频| 国产免费拔擦拔擦8x高清在线人 | 欧美黄色免费在线观看| 亚洲人xxxx| 久久精品99久久久久久| 亚洲一区二区影院| 国产又爽又黄的视频| 欧美午夜精品久久久久久浪潮 | √最新版天堂资源网在线| 992tv在线成人免费观看| 涩涩视频网站在线观看| 国产成人欧美在线观看| 粉嫩91精品久久久久久久99蜜桃 | 欧美激情一二三| 搞黄网站在线看| 欧美亚洲视频在线看网址| 国产成人精品亚洲日本在线观看| 国产精品国产亚洲伊人久久| 精品三级在线| 99电影在线观看| 色哟哟精品丝袜一区二区| 秋霞毛片久久久久久久久| 91综合在线| 日本aa在线观看| 亚洲欧美成人| 性欧美1819| 国产成人超碰人人澡人人澡| 亚洲中文字幕无码av| 欧美激情一区二区在线| 中文字幕五月天| 疯狂做受xxxx欧美肥白少妇| 无码人妻精品一区二区| 欧美电影在线免费观看| 欧美在线精品一区二区三区| 亚洲视频精品在线| 天天色天天射天天综合网| 91av在线国产| 国内精品视频| 欧美精品123| 欧美在线二区| 成人黄色一区二区| 国产精品资源在线看| 无遮挡aaaaa大片免费看| 亚洲日本韩国一区| 成人毛片在线播放| 欧美二区三区的天堂| 日韩一区av| 久久成人综合视频| 亚洲承认视频| 国产精品制服诱惑| 99成人在线视频| 欧美黄网站在线观看| 国产99久久久国产精品潘金| 在线观看免费小视频| 午夜影视日本亚洲欧洲精品| 在线观看免费视频一区| 亚洲精品福利在线| 超碰caoporn久久| 国产精品第二页| 免费成人三级| www国产免费| 蜜臀av一区二区在线免费观看| 在线播放第一页| 亚洲视频你懂的| 中文字幕人妻一区二区在线视频| 亚洲精品在线一区二区| 国产美女av在线| 国产精品久久久久久亚洲调教 | 在线观看欧美一区| 日韩av网站免费在线| 中文字幕人妻一区二区| 黄色成人在线免费| 日韩在线视频免费| 欧美激情免费在线| 2020最新国产精品| 日韩免费在线观看av| 国产伦理精品不卡| 北条麻妃在线观看视频| 91福利区一区二区三区| 欧美日韩影视| 欧美在线亚洲在线| 亚洲精品无吗| 不卡影院一区二区| 91久色porny| 亚洲欧美日韩激情| 亚洲欧美www| 韩国成人在线| 亚洲v欧美v另类v综合v日韩v| 老牛嫩草一区二区三区日本| 免费成人深夜夜行p站| 精品久久久久久久久中文字幕| 天天干免费视频| 欧美中在线观看| av亚洲免费| 亚洲国产精品三区| 中文字幕一区二| 亚洲第一大网站| 久久久久中文字幕| 精品午夜电影| 久久久久久久久久久久久国产精品 | 国产裸舞福利在线视频合集| 国产不卡av在线免费观看| 国产欧美一区二区精品久久久| 爱福利视频一区二区| 国产视频一区不卡| 亚洲视频中文字幕在线观看| 日韩在线免费视频观看| 国产美女视频一区二区 | 丝袜脚交一区二区| 成熟人妻av无码专区| 欧美高清一级片在线| 呦呦在线视频| 久久亚洲午夜电影| 日本va欧美va精品| 蜜臀av午夜精品久久| 精品播放一区二区| 男人最爱成人网| 992tv成人免费观看| 成人av网站在线观看| 国产又黄又猛又粗又爽| 亚洲美女自拍视频| 亚洲不卡系列| 女女百合国产免费网站| 亚洲三级观看| 成熟人妻av无码专区| 日韩色视频在线观看| 欧美性猛片xxxxx免费中国| 久久国产一区| 日本vs亚洲vs韩国一区三区 | 黑人狂躁日本妞一区二区三区| 国产精品久久久久久久龚玥菲| 91亚洲精品一区| 久久免费av| 久久精品国产久精国产一老狼| 日韩熟女一区二区| 亚洲欧美一区二区三区久久 | 在线免费黄色小视频| 亚洲一本大道在线| 97人人在线| 国产一区二区三区黄| 美女视频黄免费的久久| 日韩精品久久久久久久| 色偷偷偷亚洲综合网另类| 成人日韩视频| 黄色动漫在线免费看| 99re热这里只有精品视频|