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参考

浙公网安备 33010602011771号