• 递归组装树结构的数据


    开发中,经常遇到存在树形结构的数据,如行政区划这类数据,一级一级分层,后端需要组装好树形结构数据返回给前端。

    由于返给前端的json数据中,如果是叶子节点了,说明它没有子节点,那么就没必要返回chirldren 属性给前端了,此时只需要加一个注解即可:@JsonInclude(JsonInclude.Include.NON_EMPTY),该注解会自动判断集合是否为空,为空的话就不返回给前端展示了。如果是String类型的属性的话,就使用@JsonInclude(JsonInclude.Include.NON_NULL)注解

    实体类

    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.fasterxml.jackson.annotation.JsonInclude;
    import lombok.Data;
    import lombok.experimental.Accessors;
    
    /**
     * 

    * 区域表 *

    * * @author sgw * @since 2023年09月06日 */
    @Data @Accessors(chain = true) @TableName("HJBZ_QY") public class HjbzQy implements Serializable { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "ID", type = IdType.AUTO) private String id; /** * 区域名称 0表示顶级区域 */ @TableField("QYMC") private String qymc; /** * 区域编码 0表示顶级区域 */ @TableField("QYBM") private String qybm; /** * 父级区域名称 */ @TableField("PARENT_QYMC") private String parentQymc; /** * 父级ID */ @TableField("PID") private String pid; /** * 封装树结构数据 * exist设置该属性为 false,表示在查询中不使用该字段 * @JsonInclude(JsonInclude.Include.NON_EMPTY): 为空时就不返回给前端了(说明是叶子节点了,没必要返给前端一个空集合) */ @JsonInclude(JsonInclude.Include.NON_EMPTY) @TableField(exist = false) List<HjbzQy> chirldren = new ArrayList<>(); }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.ts.hjbz.entity.HjbzQy;
    import com.ts.hjbz.dao.HjbzQyMapper;
    import com.ts.hjbz.service.HjbzQyService;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 

    * 区域表 服务实现类 *

    * * @author sgw * @since 2023年09月06日 */
    @Service public class HjbzQyServiceImpl extends ServiceImpl<HjbzQyMapper, HjbzQy> implements HjbzQyService { @Autowired private HjbzQyMapper hjbzQyMapper; @Override public List<HjbzQy> getDetailTree() { QueryWrapper<HjbzQy> wrapper = new QueryWrapper<>(); List<HjbzQy> hjbzQyList= hjbzQyMapper.selectList(wrapper); //顶级节点的pid是0 List<HjbzQy> tree = createTree(hjbzQyList, "0"); return tree; } /** * 递归建立树形结构 (算法) * @param lists * @param pid * @return */ private List<HjbzQy> createTree(List<HjbzQy> lists, String pid) { List<HjbzQy> tree = new ArrayList<>(); for (HjbzQy qy : lists) { if (qy.getPid() .equals(pid) ) { qy.setChirldren(createTree(lists,qy.getId())); tree.add(qy); } } return tree; } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
  • 相关阅读:
    基于象鼻虫损害优化算法求解单目标无约束问题并可视化分析(Matlab代码实现)
    idea中maven plugin提示not found
    react入门基础准备
    计算机网络——作业4.3
    【ACM学习】【STL】关联容器的分类
    git 合并多次提交记录(commit)
    是js高级啊~
    Python爬虫入门学习:拿捏高级数据类型
    分享几种稳定靠谱的副业,从而增加你的额外收入
    5.4 Windows驱动开发:内核通过PEB取进程参数
  • 原文地址:https://blog.csdn.net/qq_33417321/article/details/132715451