父子级关系处理

总结工作中学到的(一)

项目中遇见了一种情况。如图:

这是个动态表单,可以按行添加数据。其中,Json 格式的数据可能存在下一级。即存在父子级的关系了。

首先说下:这种类型的数据,对应在数据库里多张表没必要,单张表自关联即可。

其次到本文重点,如何将这样的数据结构保存到数据库里。对应的业务场景有两种:

一种是实时保存,添加一行数据后即保存并实时返回新插入的数据信息(其实主要是主键id)。这样做的话,涉及到父子级的时候,就可以先添加父级,同时返回父级信息,里面的parentId即可以赋予子级行数据。即可实现父子级数据的保存;

第二种是只保存一次,这时候父子级是同时传给后台入库的。这时候对于子级数据来说并没有指定父级id,直接保存是无法实现的。我想了一种方式,就是把这个最重要保存的所有东西直接搞成一个大的 Json 串儿,Json既保存了数据又保存了数据之间的关系。这样子我后端就可以自己解析使用了。但是这多了一层复杂度,不好,不好。

老司机告诉我:你可以在数据传输对象里在添加一个数据对象的List列表来接收数据,这样子有子级的就存到对象里的

具体为:上文一行数据对应一个LogAnalysisConfigDto类,我现在设计一个LogAnalysisConfigCustomDto增强类,继承自LogAnalysisConfigDto并添加属性private List<LogAnalysisConfigDto> analysisConfigDtoList;。这样子整个类结构为:

import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * @author kangjia
 * @date 2019/11/4 15:52
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "日志分析配置增强类", description = "日志分析配置增强类")
public class LogAnalysisConfigCustomDto extends LogAnalysisConfigDto {

    /**
     *  子级关系
     */
    private List<LogAnalysisConfigDto> analysisConfigDtoList;
}

设计成这样子,后端保存的时候判断下属性 list是否为null,分两种情况进行入库即可。

原文地址:https://www.cnblogs.com/kjgym/p/11798914.html