工具类TreeBuild:
public class TreeBuild {// 保存参与构建树形的所有数据(通常数据库查询结果)public List<TreeNodeDTO> nodeList = new ArrayList<>();/*** 构造方法* @param nodeList 将数据集合赋值给nodeList,即所有数据作为所有节点。*/public TreeBuild(List<TreeNodeDTO> nodeList){deList = nodeList;}/*** 获取需构建的所有根节点(顶级节点) "0"* @return 所有根节点List集合*/public List<TreeNodeDTO> getRootNode(){// 保存所有根节点(所有根节点的数据)List<TreeNodeDTO> rootNodeList = new ArrayList<>();// treeNode:查询出的每一条数据(节点)for (TreeNodeDTO treeNode : nodeList){// 判断当前节点是否为根节点,此处注意:若parentId类型是String,则要采用equals()方法判断。if ("0".ParentId())) {// 是,添加rootNodeList.add(treeNode);}}return rootNodeList;}/*** 根据每一个顶级节点(根节点)进行构建树形结构* @return 构建整棵树*/public List<TreeNodeDTO> buildTree(){// treeNodes:保存一个顶级节点所构建出来的完整树形List<TreeNodeDTO> treeNodes = new ArrayList<TreeNodeDTO>();// getRootNode():获取所有的根节点for (TreeNodeDTO treeRootNode : getRootNode()) {// 将顶级节点进行构建子树treeRootNode = buildChildTree(treeRootNode);// 完成一个顶级节点所构建的树形,增加进来treeNodes.add(treeRootNode);}return treeNodes;}/*** 递归-----构建子树形结构* @param pNode 根节点(顶级节点)* @return 整棵树*/public TreeNodeDTO buildChildTree(TreeNodeDTO pNode){List<TreeNodeDTO> childTree = new ArrayList<TreeNodeDTO>();// nodeList:所有节点集合(所有数据)for (TreeNodeDTO treeNode : nodeList) {// 判断当前节点的父节点ID是否等于根节点的ID,即当前节点为其下的子节点if (ParentId().Id())) {// 再递归进行判断当前节点的情况,调用自身方法childTree.add(buildChildTree(treeNode));}}// for循环结束,即节点下没有任何节点,树形构建结束,设置树结果pNode.setChildren(childTree);return pNode;}
}
实体类:TreeNodeDTO
@Data
public class TreeNodeDTO {private String id;private String parentId;private String name;private List<TreeNodeDTO> children = new ArrayList<>();
}
调用Controller:
@ApiOperation(value="123")
@GetMapping("/areaTree")
public ApiResult<List<TreeNodeDTO>> areaTree(){List<TreeNodeDTO> treeListTree();TreeBuild treeBuild=new TreeBuild(treeList);List<TreeNodeDTO> trees = treeBuild.buildTree();return ApiResult.success(trees);
}
============================查询数据库代码===================================
service:
//获取树List<TreeNodeDTO> getTree();
mapper:
//获取树
List<TreeNodeDTO> getTreeList();
impl:
@Autowired
TreeMapper treeMapper;/** * 获取树* @return*/
public List<TreeNodeDTO> getTree(){TreeList();
}
<resultMap id="BaseResultMapTree" type=ity.TreeNodeDTO"><result column="F_CODE" property="id" /><result column="F_PARENT_CODE" property="parentId" /><result column="F_NAME" property="name" />
</resultMap><select id="getTreeList" resultMap="BaseResultMapTree">SELECT F_CODE,F_PARENT_CODE,F_NAMEFROM 表名 ORDER BY F_PARENT_CODE,F_CODE
</select>
本文发布于:2024-01-31 14:01:18,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170668087829039.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |