背景
⭐⭐⭐⭐⭐转载请注明出处:https://juejin.cn/post/7400945359192866828
前几天和公司的小伙伴聊天的时候,得知他们的项目里正要做一个功能。大概就是每家公司都会建一张表,这张表会有什么字段不确定,可能有的表10个字段,有的8个字段。然后会有导入的功能,就是给这张表导入数据。
经过一番讨论之后,得出了两套在不同应用场景的下的方案,觉得还是有一定可行性的,所以简单写篇文章分享一下,给看到这篇文章并且有相关需求的小伙伴们提供一些思路。本文只介绍方案,不涉及代码实现。
方案一: 给每张表都建一个实体类
因为是给每家有需要的公司建一张表,如果接入的公司数量不是太多并且两家接入公司的时间间隔比较长的情况,比如这个功能一共只会有十来家公司会用,而且可能一个月才会接入一家公司。那么手动地给公司建一张表,并且建一个实体类就可以了。
这也是平时做导入功能比较常见的做法,可以用Easyexcel这样现成的工具将数据解析成对应的实体类,然后针对实体类做相应的校验,然后保存到数据库中。
方案二:没有实体类实现导入功能
我们先来说说有实体类的情况。是不是Excel表中的一行数据对应一个实体类,每一列对于实体类中的一个字段。所以说,如果没有实体类,要解决的问题就是Excel中的一行数据与什么对应?每一列又与什么对应?
看一下上面这张图,常规则做法是用一个实体类UserEntity接收一行数据,最后转换成的数据就是List<UserEntity>,但是如果没有UserEntity怎么办呢?
思考一下,UserEntity是不是有若干个字段,然后我们给这若干个字段赋上值。这是不是和一个Map很像,所以可以用一个Map来接收一行数据,那么上图就是List<Map<String,String>>。解析出来的数据大概就是:
[
{
"姓名": "张三",
"手机号": "18812341234",
"年龄": "11",
"性别": "男"
},
{
"姓名": "张四",
"手机号": "18812341234",
"年龄":