zoukankan      html  css  js  c++  java
  • 父子级关系处理

    总结工作中学到的(一)

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

    这是个动态表单,可以按行添加数据。其中,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,分两种情况进行入库即可。

  • 相关阅读:
    TSQL存储过程:获取父级类别图片
    ASP.NET小收集<7>:JS创建FORM并提交
    JS收集<4>:限制输入搜索串
    js编码风格
    学习日志0504
    记于20120508日晚
    NHibernate中的Session yangan
    SQL Server2005排名函数 yangan
    让IE8兼容网页,简单开启兼容模式 yangan
    Log4Net跟我一起一步步 yangan
  • 原文地址:https://www.cnblogs.com/kjgym/p/11798914.html
Copyright © 2011-2022 走看看