JAVA后台转换成树结构数据返回给前端的实现方法

网友投稿 253 2022-12-11


JAVA后台转换成树结构数据返回给前端的实现方法

我们会经常用到树形,那么树形结构的数据是在前端做还是在后台做呢?我自己用过前端的ztree,selectTree等这些属于前端的组件,后台只需要把一个表的所有数据返回给前段就可以,前端可以通过id,pid来把层级结构划分,要是我们前端需要后台直接返回树结构数据怎么办,那么接下来我给大家介绍一下我写过的例子。

我们先看一张图了解一下树结构:我这里随便找一张图了解一下即可

接下来我们看一下数据,主要包括id,pid,名称

接下来我们写一个小例子,用递归方式转换为数

实体:

package cn.ccccltd.ccccoi.mediumterminvestment.domain;

import java.io.Serializable;

import java.util.List;

/**

* @Description:返回前端,业务模块

* @author yujiaqi

* @date: 2019年9月9日下午2:07:19

*/

public class ProjectBasicInfoDTO implements Serializable {

private static final long serialVersionUID = 1L;

private String id;

private String pId;

private String key;

private String title;

private String value;

private List children;

private Boolean selectable;

private Boolean disableCheckbox;

private Boolean disabled;

public String getId() {

return id;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public void setId(String id) {

this.id = id;

}

public String getpId() {

return pId;

}

public void setpId(String pId) {

this.pId = pId;

}

public String getKey() {

return key;

}

public void setKey(String key) {

this.key = key;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public List getChildren() {

return children;

}

public void setChildren(List children) {

this.children = children;

}

public Boolean getSelectable() {

return selectable;

}

public void setSelectable(Boolean selectable) {

this.selectable = selectable;

}

public Boolean getDisableCheckbox() {

return disableCheckbox;

}

public void setDisableCheckbox(Boolean disableCheckbox) {

this.disableCheckbox = disableCheckbox;

}

public Boolean getDisabled() {

return disabled;

}

public void setDisabled(Boolean disabled) {

this.disabled = disabled;

}

public static long getSerialversionuid() {

return serialVersionUID;

}

}

service实现类

/**

* 查询投资项目资金来源

*/

@Override

public List queryFundingSource() {

//查询投资项目资金来源

List list = projectBasicInfoMapper.queryDictionaryBean(Constant.FUNDING_SOURCE,Constant.DELFLAG);

List dataProcessing = ProjectBasicInfoServiceImpl.dataProcessing(list);

List buildByRecursive = TreeUtils.buildByRecursive(dataProcessing);

return buildByRecursive;

}

/**

* 将字典数据遍历放入ProjectBasicInfoDTO实体中

* @param list

* @return

*/

public static List dataProcessing(List list){

List list1 = Lists.newArrayList();

for (DictionaryBean dictionaryBean : list) {

ProjectBasicInfoDTO projectBasicInfoDTO = new ProjectBasicInfoDTO();

projectBasicInfoDTO.setId(dictionaryBean.getItemId());

projectBasichttp://InfoDTO.setpId(dictionaryBean.getItemParentId());

projectBasicInfoDTO.setKey(dictionaryBean.getItemId());

projectBasicInfoDTO.setTitle(dictionaryBean.getItemFullName());

projectBasicInfoDTO.setValue(dictionaryBean.getItemFullName());

projectBasicInfoDTO.setSelectable(false);

projectBasicInfoDTO.setDisableCheckbox(true);

projeEUegSTTqctBasicInfoDTO.setDisabled(true);

list1.add(projectBasicInfoDTO);

}

return list1;

}

递归方法工具类

package cn.ccccltd.ccccoi.mediumterminvestment.util;

import java.util.ArrayList;

import java.util.List;

import cn.ccccltd.ccccoi.mediumterminvestment.domain.ProjectBasicInfoDTO;

public class TreeUtils {

/**

* 使用递归方法建树

* @param treeNodes

* @return

*/

public static List buildByRecursive(List projectBasicInfoDTOs) {

List trees = new ArrayList();

for (ProjectBasicInfoDTO projectBasicInfoDTO : projectBasicInfoDTOs) {

if ("".equals(projectBasicInfoDTO.getpId()) || projectBasicInfoDTO.getpId() == null ) {

trees.add(findChildren(projectBasicInfoDTO,projectBasicInfoDTOs));

}

}

return trees;

}

/**

* 递归查找子节点

* @param treeNodes

* @return

*/

public static ProjectBasicInfoDTO findChildren(ProjectBasicInfoDTO projectBasicInfoDTO,List projectBasicInfoDTOs) {

for (ProjectBasicInfoDTO projectBasicInfoDTO2 : projectBasicInfoDTOs) {

if(projectBasicInfoDTO.getId().equals(projectBasicInfoDTO2.getpId())) {

if(projectBasicInfoDTO.getChildren() == null) {

projectBasicInfoDTO.setChildren(new ArrayList());

}

//是否还有子节点,如果有的话继续往下遍历,如果没有则直接返回

projectBasicInfoDTO.getChildren().add(findChildren(projectBasicInfoDTO2,projectBasicInfoDTOs));

}

}

return projectBasicInfoDTO;

}

}

树结构效果图


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于SpringBoot集成测试远程连接Redis服务的教程详解
下一篇:java中Locks的使用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~