mysql一次查询树数据,java封装返回前端

阅读: 评论:0

mysql一次查询树数据,java封装返回前端

mysql一次查询树数据,java封装返回前端

工具类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> treeList&#Tree();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小时内删除。

标签:数据   mysql   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23