项目开发中,几乎没法避免的会遇到树形结构,今天和你们分享java后端如何处理数据为树形结构。javascript
前端处理树形结构,后端生成树形结构。前端
Entity实体层:java
此处省略好几个实体字段。 /** * 孩子节点集合 */ private List<OrganizationVO> child = new ArrayList<OrganizationVO>();
Controller层:算法
OrganizationVO list = organizationService.selectCategoryAndChildrenById(id);
Service业务层:后端
/** * 递归查询本节点的id和孩子节点的id * @param id * @return */ OrganizationVO selectCategoryAndChildrenById(Long id);
ServiceImpl业务实现:ide
/** * 递归查询本节点的id和孩子节点的id * * @param id * @return */ @Override public OrganizationVO selectCategoryAndChildrenById(Long id) { return findChildCatgoryBak(id); } /** * 递归算法-算出子节点 */ public OrganizationVO findChildCatgoryBak(Long orgId) { List<OrganizationVO> childList = new ArrayList<>(); // 经过id获取全部VO信息 OrganizationVO organizationVO = iOrganizationService.get(orgId); //查找子节点,递归程序必需要有一个出口 List<OrganizationVO> 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
{ "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": [] } ] } }