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

Java目錄樹的創(chuàng)建與獲取

 更新時間:2024年03月31日 09:06:54   作者:Java中的戰(zhàn)斗機  
在Java開發(fā)中,經(jīng)常會涉及到生成目錄樹的需求,本文主要介紹了Java目錄樹的創(chuàng)建與獲取,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在Java開發(fā)中,經(jīng)常會涉及到生成目錄樹的需求,目錄樹是一種樹狀結(jié)構(gòu),用于表示文件系統(tǒng)中的目錄和文件之間的層次關(guān)系。下面就來介紹一下Java目錄樹的創(chuàng)建與獲取,具體如下:

邏輯代碼

    /**
     * @描述 應(yīng)用目錄樹添加
     * @作者 梁偉浩
     * @日期 2024/3/29 15:30
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R saveApplyContent(ApplyDirContentRequest request) {
        BiProjectDir projectDir = new BiProjectDir();
        BeanUtil.copyProperties(request, projectDir);
        projectDir.setCreateUser(request.getUserId());
        projectDir.setCreateTime(new Date());
        projectDir.setUpdateUser(request.getUserId());
        projectDir.setUpdateTime(new Date());
        // 參數(shù)沒傳父級ID,則進(jìn)入方法查詢是否有父級目錄,有則取其ID作為父ID無則創(chuàng)建根節(jié)點配置
        if (ObjectUtil.isEmpty(request.getParentId())) {
            BiProjectDir rootContent = this.getRootContent(request.getProjectId());
            //獲取父級ID
            projectDir.setParentId(rootContent.getId());
        }
        biProjectDirMapper.insert(projectDir);
        return R.data(projectDir);
    }


    private BiProjectDir getRootContent(Long projectId) {
      //查出同一項目下的所有目錄與文件
        BiProjectDir rootContent = biProjectDirMapper.selectOne(new LambdaQueryWrapper<BiProjectDir>().eq(BiProjectDir::getProjectId,projectId).eq(BiProjectDir::getName,"根節(jié)點配置"));
        if (rootContent == null) {
            // 如果沒有根節(jié)點配置,則自動新建根節(jié)點配置
            rootContent = new BiProjectDir();
            rootContent.setName("根節(jié)點配置");
            rootContent.setProjectId(projectId);
            rootContent.setSort(1);
            biProjectDirMapper.insert(rootContent);
        }
        return rootContent;
    }

    /**
     * @param projectId 項目ID
     * @描述 獲取應(yīng)用目錄樹
     * @作者 梁偉浩
     * @日期 2024/3/30 14:20 星期六
     */
    @Override
    public R<List<ApplyContentResponse>> getApplyContent(Long projectId) {
        List<BiProjectDir> biProjectDirs = biProjectDirMapper.selectList(new LambdaQueryWrapper<BiProjectDir>().eq(BiProjectDir::getProjectId, projectId));
        if (!biProjectDirs.isEmpty()){
            //構(gòu)建目錄樹
            List<ApplyContentResponse> list = ListTreeUtil.build(biProjectDirs, "id", "parentId", null, ApplyContentResponse.class, Comparator.comparing(ApplyContentResponse::getSort));
            System.out.println(list);
            return R.data(list);
        }
        return null;
    }

實體

package com.guodi.bi.dmp.entiy;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Date;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 項目專題目錄圖層表
 */
@Data
@ApiModel(value = "項目專題目錄圖層表", description = "項目專題目錄圖層表")
@TableName("bi_project_dir")
public class BiProjectDir {
    /**
     * 主鍵ID
     */
    @ApiModelProperty(value = "主鍵ID")
    private Long id;

    /**
     * 名稱
     */
    @ApiModelProperty(value = "名稱")
    private String name;

    /**
     * 上級ID
     */
    @ApiModelProperty(value = "上級ID")
    private Long parentId;


    /**
     * 備注
     */
    @ApiModelProperty(value = "備注")
    private String remark;

    /**
     * 目錄/圖層(1.目錄,2圖層)
     */
    @ApiModelProperty(value = "目錄/圖層(1.目錄,2圖層)")
    private Integer type;

    /**
     * 顯示順序
     */
    @ApiModelProperty(value = "顯示順序")
    private Integer sort;

    /**
     * 項目ID
     */
    @ApiModelProperty(value = "項目ID")
    private Long projectId;

    /**
     * 項目數(shù)據(jù)頁面ID
     */
    @ApiModelProperty(value = "項目數(shù)據(jù)頁面ID")
    private Long projectDataId;

    /**
     * 創(chuàng)建人
     */
    @ApiModelProperty(value = "創(chuàng)建人")
    private Long createUser;

    /**
     * 創(chuàng)建時間
     */
    @ApiModelProperty(value = "創(chuàng)建時間")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private Long updateUser;

    /**
     * 更新時間
     */
    @ApiModelProperty(value = "更新時間")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 是否已刪除
     */
    @TableLogic
    @ApiModelProperty(value = "是否已刪除")
    private Integer isDeleted = 0;
}

響應(yīng)實體

package com.guodi.bi.dmp.vo.response;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.guodi.bi.dmp.entiy.BiProjectDir;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * @author 梁偉浩
 * @description 應(yīng)用目錄樹返回實體
 * @date 2024/3/30 14:15
 * @study 星期六
 */
@Data
public class ApplyContentResponse  extends BiProjectDir {

    /**
     * 子孫節(jié)點
     */
    @ApiModelProperty(value = "子節(jié)點")
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<BiProjectDir> children;

}

到此這篇關(guān)于Java目錄樹的創(chuàng)建與獲取的文章就介紹到這了,更多相關(guān)Java目錄樹創(chuàng)建與獲取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Java線程中的ThreadLocal詳細(xì)分析

    Java線程中的ThreadLocal詳細(xì)分析

    這篇文章主要介紹了Java線程中的ThreadLocal詳細(xì)分析,ThreadLocal?提供線程的局部變量,每個線程都可以通過?get()和?set()對局部變量進(jìn)行操作而不會對其他線程的局部變量產(chǎn)生影響,實現(xiàn)了線程之間的數(shù)據(jù)隔離,需要的朋友可以參考下
    2023-09-09
  • Java字符串與正則表達(dá)式操作方法詳解

    Java字符串與正則表達(dá)式操作方法詳解

    在Java編程中正則表達(dá)式是一個強大的工具,用于處理字符串和進(jìn)行模式匹配,這篇文章主要介紹了Java字符串與正則表達(dá)式操作的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09
  • Windows 10上JDK環(huán)境安裝配置圖文教程

    Windows 10上JDK環(huán)境安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows 10上JDK環(huán)境安裝配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • maven私服搭建與使用教程

    maven私服搭建與使用教程

    在使用maven進(jìn)行Java項目的開發(fā)過程中,難免會有些公共的私有庫,這些庫是不太方便放到中央倉庫的,可以通過Nexus搭建一個私有倉庫,這篇文章主要介紹了maven私服搭建與使用,需要的朋友可以參考下
    2023-03-03
  • 利用Mybatis向PostgreSQL中插入并查詢JSON字段

    利用Mybatis向PostgreSQL中插入并查詢JSON字段

    這篇文章主要介紹了利用Mybatis向PostgreSQL中插入并查詢JSON字段,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Java?開發(fā)中?for和Stream用法對比分析

    Java?開發(fā)中?for和Stream用法對比分析

    本文介紹了for循環(huán)和Stream在Java編程中的使用場景和區(qū)別,for循環(huán)適用于簡單的遍歷、中途退出、操作索引等場景,而Stream適用于多步驟數(shù)據(jù)處理、復(fù)雜邏輯、并行計算等場景,下面通過例子給大家詳細(xì)講解,感興趣的朋友一起看看吧
    2026-03-03
  • Java SE求解漢諾塔問題的示例代碼

    Java SE求解漢諾塔問題的示例代碼

    漢諾塔問題是一個經(jīng)典的問題。漢諾塔(Hanoi Tower),又稱河內(nèi)塔,源于印度一個古老傳說。本文將用Java SE求解這一問題,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • java條件語句示例詳解

    java條件語句示例詳解

    本文給大家介紹java條件語句,Java 中的條件語句允許程序根據(jù)條件的不同執(zhí)行不同的代碼塊,一個 if 語句包含一個布爾表達(dá)式和一條或多條語句,本文結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

    關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄

    這篇文章主要介紹了關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • MyBatis延遲加載實現(xiàn)步驟詳解

    MyBatis延遲加載實現(xiàn)步驟詳解

    這篇文章主要介紹了MyBatis延遲加載實現(xiàn)步驟詳解,? MyBatis中的延遲加載,也成為懶加載,是指在進(jìn)行關(guān)聯(lián)查詢時,按照設(shè)置的延遲規(guī)則推遲對關(guān)聯(lián)對象的查詢,延遲加載可以有效的減少數(shù)據(jù)庫的壓力,需要的朋友可以參考下
    2023-10-10

最新評論

即墨市| 永州市| 寿宁县| 肥西县| 云林县| 株洲县| 共和县| 周口市| 阿图什市| 育儿| 咸宁市| 扎兰屯市| 资中县| 丹阳市| 靖远县| 凤山县| 尚义县| 石楼县| 文登市| 蓬安县| 兴义市| 安顺市| 碌曲县| 和林格尔县| 肃南| 黑龙江省| 浮梁县| 永城市| 从化市| 瑞昌市| 嵊州市| 会昌县| 揭阳市| 宝应县| 乌海市| 腾冲县| 安仁县| 南部县| 枣阳市| 松江区| 灯塔市|