SpringBoot Java将数据封装成树形结构返回给前端

根据level_code列封装树形数据结构
每四位为一个节点
0001、0002…为根节点,诸如此类四位为第一层根节点
00010001、00010002为0001子节点

数据库表(无parent_id列)

在这里插入图片描述

实体类(只列部分代码)

    /**
     * 由于数据库表中未定义父级id,实体类中使用@TableField(exist = false)标记
	 * 父级id
	 */
	@TableField(exist = false)
	@ApiModelProperty(value = "父级id")
	private Integer parentId;

新建实体类用来封装树形数据

/**
 * 物料类型树对象
 * 这里具体TreeNode可以自己查一下
 */
@Data
@ApiModel(value = "物料类型树")
@EqualsAndHashCode(callSuper = true)
public class MaterialTypeTree extends TreeNode {

	@ApiModelProperty(value = "物料类型名称")
	private String name;

}

Service层(返回树形菜单集合)

/**
	 * 查询全部物料类型树
	 * @return 树
	 */
	@Override
	public List<MaterialTypeTree> selectTree() {
		// 查询全部物料类型树
		List<MaterialType> materialTypeAllList = materialTypeMapper.selectList(Wrappers.emptyWrapper());

		// 物料类型
		List<MaterialTypeTree> collect = materialTypeAllList.stream().map(materialType -> {
			MaterialTypeTree node = new MaterialTypeTree();
			node.setId(materialType.getId());
			//如果是根节点 父id为0
			if (materialType.getLevelCode().length() == 4) {
				materialType.setParentId(0);
			} else {
				//不是根节点 截掉最后四位 剩余为父节点的levelCode 根据levelCode查找对应的id 为父id
				String temp = materialType.getLevelCode();
				temp = temp.substring(0 , temp.length()-4);
				Integer id = baseMapper.QueryIdByLevelCode(temp);
				materialType.setParentId(id);
			}
			node.setParentId(materialType.getParentId());
			node.setName(materialType.getTypeName());

			return node;
		}).collect(Collectors.toList());
		return TreeUtil.build(collect, 0);
	}

返回到前端的树形数据结构

在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值