java返回数据给前端_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());

projectBasicInfoDTO.setpId(dictionaryBean.getItemParentId());

projectBasicInfoDTO.setKey(dictionaryBean.getItemId());

projectBasicInfoDTO.setTitle(dictionaryBean.getItemFullName());

projectBasicInfoDTO.setValue(dictionaryBean.getItemFullName());

projectBasicInfoDTO.setSelectable(false);

projectBasicInfoDTO.setDisableCheckbox(true);

projectBasicInfoDTO.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;

}

}

树结构效果图

以上为后台处理树结构小demo,重点为递归那个工具类。

​文源网络,仅供学习之用,如有侵权,联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值