栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis-plus java构造树形菜单

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis-plus java构造树形菜单

这里以城市为例子,做树状结构

1.原始树结构

City.java

public class City implements Serializable {

    @ApiModelProperty(value = "城市id")
    private Integer id;

    @ApiModelProperty(value = "城市名称")
    private String name;

    @ApiModelProperty(value = "城市简介")
    private String info;

    @ApiModelProperty(value = "父级id")
    private Integer parentId;
}
2.返回的树的对象封装

CityNode.java

@Data
public class CityNode implements Serializable {

    @ApiModelProperty(value = "城市id")
    private Integer id;

    @ApiModelProperty(value = "名称")
    private String name;

    @ApiModelProperty(value = "简介")
    private String info;

    @ApiModelProperty(value = "父级id")
    private Integer parentId;

    private List children;
}

2.传入原始对象,构造成树结构
    public Result getTree(String name) {
        //获取父节点
        QueryWrapper parentWrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(name)) {//如果有查询条件,就用查询条件
            parentWrapper.like("name", name);
        } else {//没有查询条件,查询根节点(父id为0的是根节点)
            parentWrapper.eq("parent_id", 0);
        }
        List parents = this.baseMapper.selectList(parentWrapper);
        if (CollectionUtils.isEmpty(parents)) {
            return new Result();
        }
        //获取全部
        List all = this.baseMapper.selectList(null);
        //拼起来
        List tree = parents.stream().map(x -> toNode(x, all)).collect(Collectors.toList());
        return new Result(tree);
    }

	//构造成树
    private CityNode toNode(City bean, List all) {
        CityNode node = new CityNode();
        BeanUtils.copyProperties(bean, node);
        node.setChildren(all.stream()
                .filter(x -> x.getParentId().equals(bean.getId()))
                .map(y -> toNode(y, all))
                .collect(Collectors.toList()));
        return node;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333121.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号