-->

springboot后端返回树型数据

1. 说明

前端需要树的数据,后端进行处理主要有2种方式:1、通过递归调用写方法 2、通过循环,例如3层树3层循环,这样如果树比较深就会代码量很大,不建议!!!

2. 通过hutool工具对数据进行处理

导入hutool工具类依赖

// hutool工具类
    implementation 'cn.hutool:hutool-all:5.8.9'

Controller里利用hutool工具对数据进行处理

import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import com.example.pmxt.common.ReturnResult;
import com.example.pmxt.domain.Region;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@Validated
@RequestMapping("/regions")
public class RegionController {

    private RegionService service;

    @Autowired
    public RegionController(RegionService service) {
        this.service = service;
    }

    @GetMapping()
    public ReturnResult getall(){
        //这里用的MyBatis Plus
        List<Region> dtos = service.list();
        //配置
        TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
        // 自定义属性名 都要默认值的
        treeNodeConfig.setIdKey("id");
        // 最大递归深度
        treeNodeConfig.setDeep(3);
        //转换器
        List<Tree<Integer>> treeNodes = TreeUtil.build(dtos, 0, treeNodeConfig,
                (treeNode, tree) -> {
                    tree.setId(treeNode.getId());
                    tree.setParentId(treeNode.getParentId());
                    tree.setName(treeNode.getName());
                });
        return ReturnResult.buildSuccessResult(treeNodes);
    }
}

参考网址:hutool官网对树结构工具的使用
CSDN参考

posted @ 2022-11-02 22:30  ꧁ʚ星月天空ɞ꧂  阅读(337)  评论(0)    收藏  举报