一、创建表文件

二、造一些数据

注意:根节点的pid=0,其他节点的pid跟id是有对应的父子关系的。pid是父级id,代表他的子级
三、 我将实际过程中的查询和生成递归树的代码写在下面,实际开发过程中只需要改变他的实体类名
// 查询全部
@GetMapping("/list")
public Result list(){
List<Category> categories = categoryService.list();
return Result.success(categories);
}
// 查询全部,用于添加图书时的查询全部分类数据
@GetMapping("/tree")
public Result tree(){
List<Category> list = categoryService.list();
// 对list进行操作
// List<Category> treeList = list.stream().filter(v -> v.getPid() == null).collect(Collectors.toList());//第一层数据
return Result.success(createTree(null,list));//null 表示从第一级开始递归
}
/**
* 递归生成菜单树,完全递归的方法来实现递归树
*/
private List<Category> createTree(Integer pid, List<Category> categories) {
List<Category> treeList = new ArrayList<>();
for (Category category : categories) {
if(pid==null){
if(category.getPid()==null){ //那这就是第一级节点
treeList.add(category);
category.setChildren(createTree(category.getId(), categories));
}
}else{
if (pid.equals(category.getPid())) {
treeList.add(category);
category.setChildren(createTree(category.getId(), categories));
}
}
// 当children为[]的时候,将他设置成null
if(CollUtil.isEmpty(category.getChildren())){
category.setChildren(null);
}
}
return treeList;
}四、最后数据格式
{
"code": "200",
"data": [
{
"id": 9,
"name": "科技",
"remark": "科技",
"pid": null,
"createtime": "2023-02-01",
"updatetime": null,
"children": [
{
"id": 11,
"name": "生物科技",
"remark": "生物科技",
"pid": 9,
"createtime": "2023-02-01",
"updatetime": null,
"children": null
},
{
"id": 10,
"name": "高分子科技",
"remark": "高分子科技",
"pid": 9,
"createtime": "2023-02-01",
"updatetime": null,
"children": null
}
]
},
{
"id": 2,
"name": "历史文化",
"remark": "历史文化1",
"pid": null,
"createtime": "2023-01-30",
"updatetime": "2023-01-30",
"children": [
{
"id": 12,
"name": "汉朝文化",
"remark": "汉朝文化",
"pid": 2,
"createtime": "2023-02-01",
"updatetime": null,
"children": null
},
{
"id": 8,
"name": "宋朝文化",
"remark": "宋朝文化",
"pid": 2,
"createtime": "2023-02-01",
"updatetime": null,
"children": null
},
{
"id": 7,
"name": "现代文化",
"remark": "现代文化",
"pid": 2,
"createtime": "2023-02-01",
"updatetime": null,
"children": null
},
{
"id": 3,
"name": "唐朝文化",
"remark": "唐朝文化",
"pid": 2,
"createtime": "2023-02-01",
"updatetime": null,
"children": null
}
]
}
],
"msg": null
}版权声明:本文为qq_54601164原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。