Excel (SpringBoot + JPA)
SpringBoot+Jpa实现Excel的导入导出(动态Sql、分页查询、联表join)
最近做了一个项目甲方需求中要求数据的导入导出到Excel文件,Excel的复杂表头和数据格式一直是个头疼的问题,使用poi或者jexcelapi的话就需要花费大量时间处理表头以及数据格式问题,但是整个项目的开发时间只有一周,对接和联调一周,那就只能去找快速的“黑科技”了–EasyExcel,虽然EasyExcel只是对poi的再封装,但是EasyExcel中有一个模板写入的功能,是可以很好的解决复杂表头和一些基本的数据格式问题的。抽了点时间整理了一个demo,也包含一些对Jpa的进阶用法(动态Sql分页查询、联表join等)。
开发环境
环境: windows 10
编译器: IDEA 2018
数据库: MySQL 5.6
JDK: jdk1.8.0_92
Maven: 3.6
项目结构树
│ .gitignore
│ LICENSE
│ pom.xml --项目pom文件
│ README.md --readme.md文件
├─github
│ └─image --用于存放readme.md中链接的图片
├─other
│ Excel.sql --数据库建表Sql语句
│ Excel数据导入测试[PostMan].postman_collection.json --信息导入接口PostMan导出的json文件
│ 个人信息导入.xlsx --个人信息导入测试数据
│ 毕业信息导入.xlsx --毕业信息导入测试数据
│ 目录结构树.txt
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─cyan
│ │ │ └─excel
│ │ │ │ ExcelApplication.java --SpringBoot启动类
│ │ │ │
│ │ │ ├─controller
│ │ │ │ ExcelController.java --Controller层
│ │ │ │
│ │ │ ├─entity
│ │ │ │ │ GraduateInfo.java --毕业信息实体
│ │ │ │ │ UserInfo.java --用户信息实体
│ │ │ │ │
│ │ │ │ ├─joint
│ │ │ │ │ GraduateUserJoint.java --毕业和用户联表Join实体
│ │ │ │ │
│ │ │ │ └─model
│ │ │ │ DetailModel.java --详细信息Excel文件对应模型
│ │ │ │ GraduateModel.java --毕业信息Excel文件对应模型
│ │ │ │ UserModel.java --用户信息Excel文件对应模型
│ │ │ │
│ │ │ ├─enums
│ │ │ │ ExcelFileEnum.java --Excel文件类型枚举
│ │ │ │ SexTypeEnum.java --性别类型枚举
│ │ │ │
│ │ │ ├─exception
│ │ │ │ │ ExcelException.java --全局异常
│ │ │ │ │
│ │ │ │ └─handler
│ │ │ │ ExcelExceptionHandler.java --全局异常捕获处理
│ │ │ │
│ │ │ ├─listener
│ │ │ │ ExcelListener.java --excel数据处理
│ │ │ │
│ │ │ ├─repository
│ │ │ │ │ GraduateInfoRepository.java --毕业信息DAO层(jpa)
│ │ │ │ │ GraduateUserJointRepository.java --用户和毕业联表joinDAO层(jpa)
│ │ │ │ │ UserInfoRepository.java --用户信息DAO层(jpa)
│ │ │ │ │
│ │ │ │ └─Impl
│ │ │ │ GraduateUserJointRepositoryImpl.java--用户和毕业联表joinDAO层(代码实现分页/动态Sql)
│ │ │ │
│ │ │ ├─result
│ │ │ │ ResponseResult.java --返回结果体
│ │ │ │ ResponseResultEnum.java --返回结果异常枚举
│ │ │ │ ResponseResultUtils.java --返回结果工具类
│ │ │