最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA后臺(tái)轉(zhuǎn)換成樹(shù)結(jié)構(gòu)數(shù)據(jù)返回給前端的實(shí)現(xiàn)方法

 更新時(shí)間:2020年03月23日 10:38:42   作者:qq_42281649  
這篇文章主要介紹了JAVA后臺(tái)轉(zhuǎn)換成樹(shù)結(jié)構(gòu)數(shù)據(jù)返回給前端的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

我們會(huì)經(jīng)常用到樹(shù)形,那么樹(shù)形結(jié)構(gòu)的數(shù)據(jù)是在前端做還是在后臺(tái)做呢?我自己用過(guò)前端的ztree,selectTree等這些屬于前端的組件,后臺(tái)只需要把一個(gè)表的所有數(shù)據(jù)返回給前段就可以,前端可以通過(guò)id,pid來(lái)把層級(jí)結(jié)構(gòu)劃分,要是我們前端需要后臺(tái)直接返回樹(shù)結(jié)構(gòu)數(shù)據(jù)怎么辦,那么接下來(lái)我給大家介紹一下我寫(xiě)過(guò)的例子。

我們先看一張圖了解一下樹(shù)結(jié)構(gòu):我這里隨便找一張圖了解一下即可


接下來(lái)我們看一下數(shù)據(jù),主要包括id,pid,名稱


接下來(lái)我們寫(xiě)一個(gè)小例子,用遞歸方式轉(zhuǎn)換為數(shù)

實(shí)體:

package cn.ccccltd.ccccoi.mediumterminvestment.domain;

import java.io.Serializable;
import java.util.List;

/**
 * @Description:返回前端,業(yè)務(wù)模塊
 * @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<ProjectBasicInfoDTO> 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<ProjectBasicInfoDTO> getChildren() {
    return children;
  }
  public void setChildren(List<ProjectBasicInfoDTO> 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實(shí)現(xiàn)類

/**
   * 查詢投資項(xiàng)目資金來(lái)源
   */
   @Override
   public List<ProjectBasicInfoDTO> queryFundingSource() {
     //查詢投資項(xiàng)目資金來(lái)源
     List<DictionaryBean> list = projectBasicInfoMapper.queryDictionaryBean(Constant.FUNDING_SOURCE,Constant.DELFLAG);
     List<ProjectBasicInfoDTO> dataProcessing = ProjectBasicInfoServiceImpl.dataProcessing(list);
     List<ProjectBasicInfoDTO> buildByRecursive = TreeUtils.buildByRecursive(dataProcessing);
     return buildByRecursive;
   }
  
  
  /**
   * 將字典數(shù)據(jù)遍歷放入ProjectBasicInfoDTO實(shí)體中
   * @param list
   * @return
   */
  public static List<ProjectBasicInfoDTO> dataProcessing(List<DictionaryBean> list){
    List<ProjectBasicInfoDTO> 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 {
  /**
   * 使用遞歸方法建樹(shù)
   * @param treeNodes
   * @return
   */
  public static List<ProjectBasicInfoDTO> buildByRecursive(List<ProjectBasicInfoDTO> projectBasicInfoDTOs) {
    List<ProjectBasicInfoDTO> trees = new ArrayList<ProjectBasicInfoDTO>();
    for (ProjectBasicInfoDTO projectBasicInfoDTO : projectBasicInfoDTOs) {
      if ("".equals(projectBasicInfoDTO.getpId()) || projectBasicInfoDTO.getpId() == null ) {
        trees.add(findChildren(projectBasicInfoDTO,projectBasicInfoDTOs));
      }
    }
    return trees;
  }
  
  /**
  * 遞歸查找子節(jié)點(diǎn)
  * @param treeNodes
  * @return
  */
  public static ProjectBasicInfoDTO findChildren(ProjectBasicInfoDTO projectBasicInfoDTO,List<ProjectBasicInfoDTO> projectBasicInfoDTOs) {
    for (ProjectBasicInfoDTO projectBasicInfoDTO2 : projectBasicInfoDTOs) {
      if(projectBasicInfoDTO.getId().equals(projectBasicInfoDTO2.getpId())) {
        if(projectBasicInfoDTO.getChildren() == null) {
          projectBasicInfoDTO.setChildren(new ArrayList<ProjectBasicInfoDTO>());
        }
        //是否還有子節(jié)點(diǎn),如果有的話繼續(xù)往下遍歷,如果沒(méi)有則直接返回
        projectBasicInfoDTO.getChildren().add(findChildren(projectBasicInfoDTO2,projectBasicInfoDTOs));
      }
    }
    return projectBasicInfoDTO;
  }
}

樹(shù)結(jié)構(gòu)效果圖


到此這篇關(guān)于JAVA后臺(tái)轉(zhuǎn)換成樹(shù)結(jié)構(gòu)數(shù)據(jù)返回給前端的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)JAVA轉(zhuǎn)換樹(shù)結(jié)構(gòu)返回前端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Class.forName()用法及說(shuō)明

    基于Class.forName()用法及說(shuō)明

    這篇文章主要介紹了基于Class.forName()用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java利用cors實(shí)現(xiàn)跨域請(qǐng)求實(shí)例

    Java利用cors實(shí)現(xiàn)跨域請(qǐng)求實(shí)例

    本篇文章主要介紹了Java利用cors實(shí)現(xiàn)跨域請(qǐng)求實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Java如何防止JS腳本注入代碼實(shí)例

    Java如何防止JS腳本注入代碼實(shí)例

    這篇文章主要介紹了Java如何防止JS腳本注入代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java Class.getSimpleName() 詳解及用法

    java Class.getSimpleName() 詳解及用法

    這篇文章主要介紹了java Class.getSimpleName() 詳解及用法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • docusaurus如何添加一個(gè)搜索功能

    docusaurus如何添加一個(gè)搜索功能

    這篇文章主要介紹了docusaurus如何添加一個(gè)搜索功能,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • logback使用filter過(guò)濾日志操作

    logback使用filter過(guò)濾日志操作

    這篇文章主要介紹了logback使用filter過(guò)濾日志操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 詳解SpringBoot的Run方法

    詳解SpringBoot的Run方法

    本文給大家介紹了SpringBoot的Run方法,文中通過(guò)實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-10-10
  • 解決IDEA無(wú)法下載maven依賴的問(wèn)題

    解決IDEA無(wú)法下載maven依賴的問(wèn)題

    這篇文章主要介紹了解決IDEA無(wú)法下載maven依賴的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Xml中使用foreach遍歷對(duì)象實(shí)現(xiàn)代碼

    Xml中使用foreach遍歷對(duì)象實(shí)現(xiàn)代碼

    這篇文章主要介紹了Xml中使用foreach遍歷對(duì)象實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • javaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    javaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了javaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論

长顺县| 双流县| 仁化县| 泽普县| 增城市| 竹溪县| 汨罗市| 霍山县| 外汇| 渭南市| 正宁县| 肇庆市| 长海县| 曲阳县| 博白县| 凤城市| 宝山区| 平乐县| 呼图壁县| 五峰| 滕州市| 隆安县| 武平县| 清涧县| 荃湾区| 汉寿县| 河南省| 安远县| 光山县| 丹东市| 灌云县| 孙吴县| 莱州市| 大同县| 贡山| 彰化县| 繁昌县| 南安市| 斗六市| 吉安市| 改则县|