SpringBoot怎么集成EasyExcel应用
SpringBoot怎么集成EasyExcel应用
这篇文章主要讲解了“SpringBoot怎么集成EasyExcel应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么集成EasyExcel应用”吧!
1、介绍
特点:
1、Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是 非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或 者JVM频繁的full gc。
2、EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减 少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一 行行读取数据,逐个解析。
3、EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理 (AnalysisEventListener)。
2、应用场景
1、数据导入:减轻录入工作量
2、数据导出:统计信息归档
3、数据传输:异构系统之间数据传输
3、要实现的效果
sql
CREATETABLE`edu_subject`(`id`char(19)NOTNULLCOMMENT"课程类别ID",`title`varchar(10)NOTNULLCOMMENT"类别名称",`parent_id`char(19)NOTNULLDEFAULT"0"COMMENT"父ID",`sort`intunsignedNOTNULLDEFAULT"0"COMMENT"排序字段",`gmt_create`datetimeNOTNULLCOMMENT"创建时间",`gmt_modified`datetimeNOTNULLCOMMENT"更新时间",PRIMARYKEY(`id`),KEY`idx_parent_id`(`parent_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ciROW_FORMAT=COMPACTCOMMENT="课程科目";
转成->
3、使用
3.1、pom依赖导入
温馨提示:以下版本不能更换,换了可能会不行
3.2、controller
packagecom.zhz.serviceedu.controller;importcom.zhz.common.utils.R;importcom.zhz.serviceedu.service.EduSubjectService;importio.swagger.annotations.Api;importio.swagger.annotations.ApiOperation;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.CrossOrigin;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importorg.springframework.web.multipart.MultipartFile;/***
*课程科目前端控制器*
**@authorzhz*@since2021-07-03*/@RestController@RequestMapping("/eduservice/subject")@CrossOrigin@Api(tags="课程科目")publicclassEduSubjectController{@AutowiredprivateEduSubjectServiceeduSubjectService;/***添加课程分类,获取上传过来的文件,把文件内容读取出来*/@PostMapping("/addSubject")@ApiOperation(value="添加课程分类,获取上传过来的文件,把文件内容读取出来")publicRaddSubject(MultipartFilefile){//上传过来的excel文件eduSubjectService.saveSubject(file,eduSubjectService);returnR.ok();}}3.3、interface
packagecom.zhz.serviceedu.service;importcom.zhz.serviceedu.entity.EduSubject;importcom.baomidou.mybatisplus.extension.service.IService;importorg.springframework.web.multipart.MultipartFile;/***
*课程科目服务类*
**@authorzhz*@since2021-07-03*/publicinterfaceEduSubjectServiceextendsIService3.4、impl
packagecom.zhz.serviceedu.service.impl;importcom.alibaba.excel.EasyExcel;importcom.zhz.serviceedu.entity.EduSubject;importcom.zhz.serviceedu.entity.excel.SubjectData;importcom.zhz.serviceedu.listener.SubjectExcelListener;importcom.zhz.serviceedu.mapper.EduSubjectMapper;importcom.zhz.serviceedu.service.EduSubjectService;importcom.baomidou.mybatisplus.extension.service.impl.ServiceImpl;importorg.springframework.stereotype.Service;importorg.springframework.web.multipart.MultipartFile;importjava.io.InputStream;/***
*课程科目服务实现类*
**@authorzhz*@since2021-07-03*/@ServicepublicclassEduSubjectServiceImplextendsServiceImpl3.5、listener
packagecom.zhz.serviceedu.listener;importcom.alibaba.excel.context.AnalysisContext;importcom.alibaba.excel.event.AnalysisEventListener;importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;importcom.zhz.servicebase.execptionhandler.GuliException;importcom.zhz.serviceedu.entity.EduSubject;importcom.zhz.serviceedu.entity.excel.SubjectData;importcom.zhz.serviceedu.service.EduSubjectService;importlombok.extern.slf4j.Slf4j;importorg.springframework.util.StringUtils;/***@authorzhouhengzhe*@Description:excel监听器*@date2021/7/3上午2:28*/@Slf4jpublicclassSubjectExcelListenerextendsAnalysisEventListener
3.6、小细节,实体类pojo
因为mybatisplus生成的实体类的主键生成策略是IdType.ID_WORKER,所以需要修改成IdType.ID_WORKER_STR,否则会有转换问题
packagecom.zhz.serviceedu.entity;importcom.baomidou.mybatisplus.annotation.FieldFill;importcom.baomidou.mybatisplus.annotation.IdType;importjava.util.Date;importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.annotation.TableId;importjava.io.Serializable;importio.swagger.annotations.ApiModel;importio.swagger.annotations.ApiModelProperty;importlombok.Data;importlombok.EqualsAndHashCode;importlombok.experimental.Accessors;/***
*课程科目*
**@authorzhz*@since2021-07-03*/@Data@EqualsAndHashCode(callSuper=false)@Accessors(chain=true)@ApiModel(value="EduSubject对象",description="课程科目")publicclassEduSubjectimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@ApiModelProperty(value="课程类别ID")@TableId(value="id",type=IdType.ID_WORKER_STR)privateStringid;@ApiModelProperty(value="类别名称")privateStringtitle;@ApiModelProperty(value="父ID")privateStringparentId;@ApiModelProperty(value="排序字段")privateIntegersort;@ApiModelProperty(value="创建时间")@TableField(fill=FieldFill.INSERT)privateDategmtCreate;@ApiModelProperty(value="更新时间")@TableField(fill=FieldFill.INSERT_UPDATE)privateDategmtModified;}感谢各位的阅读,以上就是“SpringBoot怎么集成EasyExcel应用”的内容了,经过本文的学习后,相信大家对SpringBoot怎么集成EasyExcel应用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
推荐阅读
-
vue动态添加删除输入框(springboot vue怎么让数据库显示出来)
springbootvue怎么让数据库显示出来?一般情况下是前端调阅后端接口,来获取到数据库的数据,后端哪里会把数据库的数据整理...
-
springboot实现基于aop的切面日志
本文实例为大家分享了springboot实现基于aop的切面日志的具体代码,供大家参考,具体内容如下通过aop的切面方式实现日志...
-
SpringBoot定时任务功能怎么实现
-
SpringBoot中的@Import注解怎么使用
-
SpringBoot整合Lombok及常见问题怎么解决
SpringBoot整合Lombok及常见问题怎么解决这篇文章主要...
-
springboot图片验证码功能模块怎么实现
springboot图片验证码功能模块怎么实现本篇内容主要讲解“s...
-
Springboot+SpringSecurity怎么实现图片验证码登录
-
SpringBoot注解的知识点有哪些
SpringBoot注解的知识点有哪些这篇“SpringBoot注...
-
SpringBoot2.x中management.security.enabled=false无效怎么解决
SpringBoot2.x中management.security.enabled=false无效怎么解决...
-
springboot怎么禁用某项健康检查
springboot怎么禁用某项健康检查今天小编给大家分享一下sp...