前端展示html
完整资料: 链接:pan.baidu.com/s/1xvCUKHr8… 提取码:caac
认识数据json
[
{
"id": 1,
"name": "Category 1",
"parentid": 0,
"children": [
{
"id": 2,
"name": "Sub-category 1-1",
"parentid": 1,
"children": []
},
{
"id": 3,
"name": "Sub-category 1-2",
"parentid": 1,
"children": []
}
]
},
{
"id": 4,
"name": "Category 2",
"parentid": 0,
"children": [
{
"id": 5,
"name": "Sub-category 2-1",
"parentid": 4,
"children": []
}
]
}
]
后端实现java
1、数据domain
@TableName(value ="resource_categories")
@Data
public class ResourceCategories implements Serializable {
private Integer id;
private Integer parentid;
private String name;
private static final long serialVersionUID = 1L;
}
2、构建树结构dto
@Data
public class CategoryTreeNode {
private Integer id;
private String name;
private Integer parentid;
private List<CategoryTreeNode> children;
// 将查询结果组织成树形结构
public static CategoryTreeNode buildTree(List<ResourceCategories> categories, Integer parentId) {
CategoryTreeNode parentNode = new CategoryTreeNode();
parentNode.setChildren(new ArrayList<>());
for (ResourceCategories category : categories) {
if (category.getParentid().equals(parentId)) {
CategoryTreeNode childNode = new CategoryTreeNode();
childNode.setId(category.getId());
childNode.setName(category.getName());
childNode.setParentid(category.getParentid());
childNode.setChildren(buildTree(categories, category.getId()).getChildren());
parentNode.getChildren().add(childNode);
}
}
return parentNode;
}
}
3、controller类
@RestController
@RequestMapping("/treenode")
public class TreeController {
@Autowired
private ResourceCategoriesService resourceCategoriesService;
@GetMapping
public List<ResourceCategories> ListTree(){
List<ResourceCategories> list = resourceCategoriesService.list();
return list;
}
@GetMapping("/tree")
@ResponseBody
@CrossOrigin
public String buildAndTraverseTree() throws JsonProcessingException {
// 模拟数据库查询结果
List<ResourceCategories> categories = resourceCategoriesService.list();
// 构建树形结构
CategoryTreeNode rootNode = CategoryTreeNode.buildTree(categories, 0);
// 将树形结构转换为 JSON 格式
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(rootNode.getChildren());
return json;
}
}
作者:weiweitest