【java再帰生成ツリー】


プロジェクト開発では、ツリー構造に遭遇することはほとんど避けられません.今日はjavaバックエンドがデータをツリー構造にどのように処理するかを共有します.
フロントエンドはツリー構造を処理し、バックエンドはツリー構造を生成します.
Entityエンティティ・レイヤ:
              。

    /**
     *       
     */
    private List child = new ArrayList();

Controllerレイヤ:
OrganizationVO list = organizationService.selectCategoryAndChildrenById(id);

サービス・ビジネス・レベル:
/**
     *         id      id
     * @param id
     * @return
     */
    OrganizationVO selectCategoryAndChildrenById(Long id);

サービスインプリメンテーション:
    /**
     *         id      id
     *
     * @param id
     * @return
     */
    @Override
    public OrganizationVO selectCategoryAndChildrenById(Long id) {
        return findChildCatgoryBak(id);
    }
    
    /**
     *     -     
     */
    public OrganizationVO findChildCatgoryBak(Long orgId) {
        List childList = new ArrayList<>();
        //   id    VO  
        OrganizationVO organizationVO = iOrganizationService.get(orgId);

        //     ,            
        List organizationList = iOrganizationService.getChildren(null, orgId);
        //organizationVO.setChild(organizationList);
        for (OrganizationVO item : organizationList) {
            childList.add(findChildCatgoryBak(item.getId()));
        }
        organizationVO.setChild(childList);
        return organizationVO;
    }

業務中の判断は自分で加えることができて、例えばIdを通じてこの情報がnullであるかどうかを取得します.
テスト結果:
{
  "code": 0,
  "message": "      ",
  "items": {
    "id": 2,
    "createTime": null,
    "modifyTime": "2020-04-21 16:37:35",
    "creatorId": 0,
    "modifierId": 0,
    "parentId": 0,
    "orgName": "    ",
    "orgState": "ENABLE",
    "description": "",
    "orgSort": 1,
    "child": [
      {
        "id": 3,
        "createTime": "2020-04-21 16:41:07",
        "modifyTime": "2020-04-22 10:40:52",
        "creatorId": 0,
        "modifierId": 0,
        "parentId": 2,
        "orgName": "  ",
        "orgState": "ENABLE",
        "description": "",
        "orgSort": 1,
        "child": [
          {
            "id": 21,
            "createTime": "2020-04-23 23:11:45",
            "modifyTime": "2020-04-23 23:11:45",
            "creatorId": null,
            "modifierId": null,
            "parentId": 3,
            "orgName": "     ",
            "orgState": "ENABLE",
            "description": "      ",
            "orgSort": null,
            "child": []
          }
        ]
      },
      {
        "id": 13,
        "createTime": "2020-04-22 16:34:08",
        "modifyTime": "2020-04-22 16:34:08",
        "creatorId": null,
        "modifierId": null,
        "parentId": 2,
        "orgName": "    1",
        "orgState": "ENABLE",
        "description": "",
        "orgSort": 4,
        "child": []
      },
      {
        "id": 14,
        "createTime": "2020-04-22 19:07:58",
        "modifyTime": "2020-04-22 19:07:58",
        "creatorId": null,
        "modifierId": null,
        "parentId": 2,
        "orgName": "  ",
        "orgState": "ENABLE",
        "description": "      ",
        "orgSort": null,
        "child": []
      },
      {
        "id": 16,
        "createTime": "2020-04-23 10:13:26",
        "modifyTime": "2020-04-23 10:13:26",
        "creatorId": null,
        "modifierId": null,
        "parentId": 2,
        "orgName": "112",
        "orgState": "ENABLE",
        "description": null,
        "orgSort": null,
        "child": []
      },
      {
        "id": 20,
        "createTime": "2020-04-23 22:33:10",
        "modifyTime": "2020-04-23 22:33:10",
        "creatorId": null,
        "modifierId": null,
        "parentId": 2,
        "orgName": "  1111111",
        "orgState": "ENABLE",
        "description": null,
        "orgSort": 3,
        "child": []
      }
    ]
  }
}