Java目錄樹的創(chuàng)建與獲取
在Java開發(fā)中,經(jīng)常會(huì)涉及到生成目錄樹的需求,目錄樹是一種樹狀結(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ù)沒傳父級(jí)ID,則進(jìn)入方法查詢是否有父級(jí)目錄,有則取其ID作為父ID無則創(chuàng)建根節(jié)點(diǎn)配置 if (ObjectUtil.isEmpty(request.getParentId())) { BiProjectDir rootContent = this.getRootContent(request.getProjectId()); //獲取父級(jí)ID projectDir.setParentId(rootContent.getId()); } biProjectDirMapper.insert(projectDir); return R.data(projectDir); } private BiProjectDir getRootContent(Long projectId) { //查出同一項(xiàng)目下的所有目錄與文件 BiProjectDir rootContent = biProjectDirMapper.selectOne(new LambdaQueryWrapper<BiProjectDir>().eq(BiProjectDir::getProjectId,projectId).eq(BiProjectDir::getName,"根節(jié)點(diǎn)配置")); if (rootContent == null) { // 如果沒有根節(jié)點(diǎn)配置,則自動(dòng)新建根節(jié)點(diǎn)配置 rootContent = new BiProjectDir(); rootContent.setName("根節(jié)點(diǎn)配置"); rootContent.setProjectId(projectId); rootContent.setSort(1); biProjectDirMapper.insert(rootContent); } return rootContent; } /** * @param projectId 項(xiàng)目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; }
實(shí)體
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; /** * 項(xiàng)目專題目錄圖層表 */ @Data @ApiModel(value = "項(xiàng)目專題目錄圖層表", description = "項(xiàng)目專題目錄圖層表") @TableName("bi_project_dir") public class BiProjectDir { /** * 主鍵ID */ @ApiModelProperty(value = "主鍵ID") private Long id; /** * 名稱 */ @ApiModelProperty(value = "名稱") private String name; /** * 上級(jí)ID */ @ApiModelProperty(value = "上級(jí)ID") private Long parentId; /** * 備注 */ @ApiModelProperty(value = "備注") private String remark; /** * 目錄/圖層(1.目錄,2圖層) */ @ApiModelProperty(value = "目錄/圖層(1.目錄,2圖層)") private Integer type; /** * 顯示順序 */ @ApiModelProperty(value = "顯示順序") private Integer sort; /** * 項(xiàng)目ID */ @ApiModelProperty(value = "項(xiàng)目ID") private Long projectId; /** * 項(xiàng)目數(shù)據(jù)頁(yè)面ID */ @ApiModelProperty(value = "項(xiàng)目數(shù)據(jù)頁(yè)面ID") private Long projectDataId; /** * 創(chuàng)建人 */ @ApiModelProperty(value = "創(chuàng)建人") private Long createUser; /** * 創(chuàng)建時(shí)間 */ @ApiModelProperty(value = "創(chuàng)建時(shí)間") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 更新人 */ @ApiModelProperty(value = "更新人") private Long updateUser; /** * 更新時(shí)間 */ @ApiModelProperty(value = "更新時(shí)間") @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)實(shí)體
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)用目錄樹返回實(shí)體 * @date 2024/3/30 14:15 * @study 星期六 */ @Data public class ApplyContentResponse extends BiProjectDir { /** * 子孫節(jié)點(diǎn) */ @ApiModelProperty(value = "子節(jié)點(diǎn)") @JsonInclude(JsonInclude.Include.NON_EMPTY) private List<BiProjectDir> children; }
到此這篇關(guān)于Java目錄樹的創(chuàng)建與獲取的文章就介紹到這了,更多相關(guān)Java目錄樹創(chuàng)建與獲取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java 畫pdf用itext調(diào)整表格寬度、自定義各個(gè)列寬的方法
這篇文章主要介紹了java 畫pdf用itext調(diào)整表格寬度、自定義各個(gè)列寬的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01MybatisPlus3.3.0沒有MybatisPlusInterceptor類問題的解決方法
項(xiàng)目使用的是mybatis-plus-extension3.3.0依賴,然后在我使用分頁(yè)插件的時(shí)候,發(fā)現(xiàn)無法導(dǎo)入MybatisPlusInterceptor類所以本文給大家介紹了MybatisPlus3.3.0沒有MybatisPlusInterceptor類問題的解決方法,需要的朋友可以參考下2023-12-12MyBatis通用Mapper和PageHelper的過程詳解
這篇文章主要介紹了MyBatis通用Mapper和PageHelper的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11IDEA中程序包Org.Springframework.Boot不存在問題及解決
這篇文章主要介紹了IDEA中程序包Org.Springframework.Boot不存在問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07SpringCloud實(shí)現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway詳細(xì)分析
這篇文章主要介紹了SpringCloud實(shí)現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-04-04