EasyExcel导入存在合并单元格的Excel
Excel表格
下面是Excel表格,成果简介前可以作为主表数据存储(存在合并),成果简介后的数据作为从表数据存储。
实现思路
-
通过EasyExcel读取Excel数据,用List<AwardsDetailField> list接收
因为POI/EasyExcel对合并单元格的数据只读取一次,需要把为空的单元格也赋值,这是核心技术难点。 -
循环使用hibernate-validator对数据进行校验
存在校验不通过的数据返回给前端,所有数据校验通过才写入数据库 -
封装然后写入数据库
- 用Java8 对List< DetailFeiled> list根据多字段进行分组,得到Map<String,List
> map - 循环map,封装主表和详细表插入list
- 批量插入
- 用Java8 对List< DetailFeiled> list根据多字段进行分组,得到Map<String,List
-
导入时要求同一年数据可以分多次导入,但同一年内,成果名称不允许重复
这个可以在数据库中根据获奖类型+获奖年份+成果名称建立联合约束1
ALTER TABLE t_awards ADD CONSTRAINT award_type_year_product UNIQUE (award_type,award_year,award_product);
Java反射和EasyExcel把实体信息导出为Excel表格
前后端分离,后端虽然用了Swagger但有时候还是需要手动维护文档的,Java实体字段很多的时候,维护起来还是很费时间。本文介绍如何通过Java反射和EasyExcel把实体信息导出为Excel表格,表格可用于维护接口文档。
MyBatis自查询递归生成目录菜单树
需求
要求前端展示所有奖励政策分类,一共有两级菜单,如下图所示:
代码实现
数据库表设计脚本如下:
1 | CREATE TABLE `t_incentive_policy_type` ( |
插入几条测试数据: