一个表中通过parentId得到不同层的内容

本文介绍了一种通过递归方式构建楼宇及其附属能源设备树形结构的方法。该方法首先获取顶层楼宇信息,并为每个楼宇添加对应的能源项目节点,再递归地为每个能源项目添加其子项目,直至构建完整个树形结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 通过parentID来得到不同层次的内容(递归的方式获得)方法如下:

 

 public EnergyTree createTree(Long id) {
  // 先取第一层楼宇列表
  List<Building> bList = buildingService.getAllBuildings();
  // 创建楼宇树
  EnergyTree root = new EnergyTree();
  root.setTreeName("根目录");
  for (Building b : bList) {
   EnergyTree node = new EnergyTree();
   node.setBuildingId(b.getId());
   node.setTreeId(b.getId());
   node.setTreeName(b.getBuildingName());
   root.addChild(node);
   // 创建楼宇下面的子项
   List<EnergyItemName> eList = (List<EnergyItemName>) buildingService
     .getAllEnergyItemById(b.getId());
   for (EnergyItemName item : eList) {
    EnergyTree itemNode = new EnergyTree();
    itemNode.setTreeId(item.getId());
    itemNode.setTreeName(item.getEnergyItemName());
    itemNode.setParent(node);
    node.addChild(itemNode);
    this.addChild(itemNode);
   }
  }
  return root;
 }

 public void addChild(EnergyTree parentNode) {
  // 获取下属所有 列表
  List<EnergyItemName> eList = energyDataService.findAllChildsEIByParId(parentNode.getTreeId());
  for (EnergyItemName item : eList) {
   EnergyTree itemNode = new EnergyTree();
   itemNode.setBuildingId(item.getBuilding().getId());
   itemNode.setParent(parentNode);
   itemNode.setNodeType(item.getParentId());
   itemNode.setTreeId(item.getId());
   itemNode.setTreeName(item.getEnergyItemName());
   parentNode.addChild(itemNode);
   this.addChild(itemNode);
  }
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值