类型树展示

需求:文章类型添加和修改的时候要选择上级类型,实际项目中前端会使用框架的级联框实现,后端采用无限极树实现

1.实体domain添加属性
//添加一个集合,用于装当前类型的所有子类型;children名称不能乱写要与前端一致【elementUI的级联框组件】
/**
  * 自定义: 保存自己的所有子类型
  * 注意: 前端我们使用的是ElementUI的级联框, 默认子类型集合属性名就是children
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY) //类型树最后一级没有数据就不显示
private List<ArticleType> children = new ArrayList<>();
.2.无限极树业务
private List<ArticleType> typeTree(){
    List<ArticleType> articleTypes = articleTypeMapper.findAll();
    //使用Map充当缓解,<Long,ArticleType>设置是为了方便通过key[id]获取value[类型对象]
    Map<Long,ArticleType> map = new HashMap<>();
    for (ArticleType articleType : articleTypes) {
        map.put(articleType.getId(),articleType);
    }
    //遍历所有找自己的父类型:没有就直接加到类型树,有就找到自己的父类型,将自己加到父类型的集合中
    List<ArticleType> typeTree = new ArrayList<>();
    for (ArticleType articleType : articleTypes) {
        //1.获取父类型的id
        Long parentId = articleType.getParentId();
        if(parentId==null){
            typeTree.add(articleType);
        }else{
            //2.获取父类型对象
            ArticleType parentArticleType = map.get(parentId);
            if(parentArticleType != null){
                //3.获取父类型装子类型的集合children
                List<ArticleType> children = parentArticleType.getChildren();
                //4.将自己装到集合中
                children.add(articleType);
            }
        }
    }
    return typeTree;
}
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值