Java树形菜单实现思路

Java实现树形菜单

提到树形菜单就要想到用递归的方式来实现

  1. 创建Mapper接口

    查询父节点的所有子节点:参数为父节点的ID

    @Select("select * from sys_depart where parent_id = #{pid}")
    public List<SysDepart> findParent(@Param("pid") String pid);
    
  2. 在业务层创建私有方法做递归(参数为要查询的父节点)

    1. 首先根据参数父节点的ID查出子节点。
    2. 判断查出的子节点是否为Null
    3. 遍历获取到的子节点,设置每个子节点的子节点(调用自身方法,查询当前子节点的所有子节点:把当前子节点的ID作为父节点进行查询,就可得到所有子节点)
    4. 将节点添加的新集合中一并返回。
    private List<SysDepart> getChild(String pid){
        List<SysDepart> departList = new ArrayList<>();
        /*根据父节查出所有子节点的信息*/
        List<SysDepart> sysDeparts = this.sysDepartCeMapper.findParent(pid);
    
        /*如果有子节点的信息进入判断*/
        if (!CollectionUtils.isEmpty(sysDeparts)){
            /*遍历当前节点*/
            sysDeparts.forEach(i->{
                /*设置每个节点的子节点(调用自身再次查询子节点,将当前节点的ID作为父节点查询子节点)*/
                i.setChildren(this.getChild(i.getId()));
                /*将节点添加到集合中一并返回*/
                departList.add(i);
            });
        }
        return departList;
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值