Java递归全查询组织部门层级关系(SpringBoot版本)

1. 效果图

在这里插入图片描述
通过前面的封装完的Json,前端结合Layui做的效果图

2. 实体类

/**
 * 组织部门实体类
 */
@Data
@ToString
public class Menu {
    //ID
    private String id;
    //机构名称
    private String name;
    //上级机构ID
    private String parentId;
    //其他属性省略,主要是这三个属性
}

3. 树形结构封装工具类(递归)

/**
 *树形结构封装类
 */
public class MenuTree {
    private static Map<String,Object> mapArray = new LinkedHashMap<String, Object>();
    private List<Menu> menuCommon;
    private List<Object> list = new ArrayList<Object>();

    public List<Object> menuList(List<Menu> menu){
        this.menuCommon = menu;
        for (Menu x : menu) {
            Map<String,Object> mapArr = new LinkedHashMap<String, Object>();
            if(x.getParentId().equals("0")){
                mapArr.put("id", x.getId());
                mapArr.put("title", x.getName());
                mapArr.put("spread",true);
                mapArr.put("parentId", x.getParentId());
                mapArr.put("children", menuChild(x.getId()));
                list.add(mapArr);
            }
        }
        return list;
    }


    private List<?> menuChild(String id) {
        List<Object> lists = new ArrayList<Object>();
        for (Menu x : menuCommon) {
            Map<String, Object> childArray = new LinkedHashMap<String, Object>();
            if (x.getParentId().equals(id)) {
                childArray.put("id", x.getId());
                childArray.put("title", x.getName());
                childArray.put("spread",true);
                childArray.put("parentId", x.getParentId());
                childArray.put("children", menuChild(x.getId()));
                lists.add(childArray);
            }
        }
        return lists;
    }
}

4. Dao层

@Mapper
public interface TestDao {
    @Select("select id,parent_id parentId,name,phone,remark,active_flag activeFlag,create_user createUser,create_date createDate from t_menu")
    public List<Menu> MenuList();
}

5. Service层

@Service
public class TestService {
    @Autowired
    private TestDao testDao;

    public List<Object> getMenuList(){
        //一步到位
        return new MenuTree().menuList(testDao.MenuList());
    }
}

6. Controller层

@Controller
public class TestController {
    @Autowired
    private TestService testService;

    @RequestMapping("/getMenuList")
    @ResponseBody
    public String getMenuList(){
        return JSON.toJSONString(testService.getMenuList());
    }
}
  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值