Java目錄樹的創(chuàng)建與獲取
在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,則進入方法查詢是否有父級目錄,有則取其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 畫pdf用itext調(diào)整表格寬度、自定義各個列寬的方法
這篇文章主要介紹了java 畫pdf用itext調(diào)整表格寬度、自定義各個列寬的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01MybatisPlus3.3.0沒有MybatisPlusInterceptor類問題的解決方法
項目使用的是mybatis-plus-extension3.3.0依賴,然后在我使用分頁插件的時候,發(fā)現(xiàn)無法導入MybatisPlusInterceptor類所以本文給大家介紹了MybatisPlus3.3.0沒有MybatisPlusInterceptor類問題的解決方法,需要的朋友可以參考下2023-12-12MyBatis通用Mapper和PageHelper的過程詳解
這篇文章主要介紹了MyBatis通用Mapper和PageHelper的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11IDEA中程序包Org.Springframework.Boot不存在問題及解決
這篇文章主要介紹了IDEA中程序包Org.Springframework.Boot不存在問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07SpringCloud實現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway詳細分析
這篇文章主要介紹了SpringCloud實現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-04-04