• 父子级关系处理


    总结工作中学到的(一)

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

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

  • 相关阅读:
    悄悄蒙上你的眼睛 后门程序知识完全解析 java程序员
    教你认识网页中五种隐形的危险病毒 java程序员
    安全知识 黑客是如何攻击电子邮件的 java程序员
    著名黑客工具CC攻击的思路及防范方法 java程序员
    Educational Codeforces Round 45 (Rated for Div. 2) G GCD Counting
    Dual Palindromes
    2012暑假集训内部测试赛1
    hdu4380Farmer Greedy(多校3)
    sdutCity Horizon(离散化)
    USACO1.22Transformations
  • 原文地址:https://www.cnblogs.com/kjgym/p/11798914.html
Copyright © 2020-2023  润新知