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,則進(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)文章
Windows 10上JDK環(huán)境安裝配置圖文教程
這篇文章主要為大家詳細(xì)介紹了Windows 10上JDK環(huán)境安裝配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
利用Mybatis向PostgreSQL中插入并查詢JSON字段
這篇文章主要介紹了利用Mybatis向PostgreSQL中插入并查詢JSON字段,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07
關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄
這篇文章主要介紹了關(guān)于SpingMVC的<context:component-scan>包掃描踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

