Java目录树的创建与获取

 更新时间:2024年03月31日 09:06:54   作者:Java中的战斗机  
在Java开发中,经常会涉及到生成目录树的需求,本文主要介绍了Java目录树的创建与获取,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧

在Java开发中,经常会涉及到生成目录树的需求,目录树是一种树状结构,用于表示文件系统中的目录和文件之间的层次关系。下面就来介绍一下Java目录树的创建与获取,具体如下:

逻辑代码

    /**
     * @描述 应用目录树添加
     * @作者 梁伟浩
     * @日期 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());
        // 参数没传父级ID,则进入方法查询是否有父级目录,有则取其ID作为父ID无则创建根节点配置
        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,"根节点配置"));
        if (rootContent == null) {
            // 如果没有根节点配置,则自动新建根节点配置
            rootContent = new BiProjectDir();
            rootContent.setName("根节点配置");
            rootContent.setProjectId(projectId);
            rootContent.setSort(1);
            biProjectDirMapper.insert(rootContent);
        }
        return rootContent;
    }

    /**
     * @param projectId 项目ID
     * @描述 获取应用目录树
     * @作者 梁伟浩
     * @日期 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()){
            //构建目录树
            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;

    /**
     * 项目数据页面ID
     */
    @ApiModelProperty(value = "项目数据页面ID")
    private Long projectDataId;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private Long createUser;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @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;
}

响应实体

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 应用目录树返回实体
 * @date 2024/3/30 14:15
 * @study 星期六
 */
@Data
public class ApplyContentResponse  extends BiProjectDir {

    /**
     * 子孙节点
     */
    @ApiModelProperty(value = "子节点")
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<BiProjectDir> children;

}

到此这篇关于Java目录树的创建与获取的文章就介绍到这了,更多相关Java目录树创建与获取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:

相关文章

  • Java OSS批量下载并压缩为ZIP代码实例

    Java OSS批量下载并压缩为ZIP代码实例

    这篇文章主要介绍了Java OSS批量下载并压缩为ZIP代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • java 画pdf用itext调整表格宽度、自定义各个列宽的方法

    java 画pdf用itext调整表格宽度、自定义各个列宽的方法

    这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • MybatisPlus3.3.0没有MybatisPlusInterceptor类问题的解决方法

    MybatisPlus3.3.0没有MybatisPlusInterceptor类问题的解决方法

    项目使用的是mybatis-plus-extension3.3.0依赖,然后在我使用分页插件的时候,发现无法导入MybatisPlusInterceptor类所以本文给大家介绍了MybatisPlus3.3.0没有MybatisPlusInterceptor类问题的解决方法,需要的朋友可以参考下
    2023-12-12
  • MDC在多线程中的使用方式

    MDC在多线程中的使用方式

    这篇文章主要介绍了MDC在多线程中的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 3分钟快速搞懂Java的桥接方法示例

    3分钟快速搞懂Java的桥接方法示例

    这篇文章主要介绍了3分钟快速搞懂Java的桥接方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • MyBatis通用Mapper和PageHelper的过程详解

    MyBatis通用Mapper和PageHelper的过程详解

    这篇文章主要介绍了MyBatis通用Mapper和PageHelper的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • IDEA中程序包Org.Springframework.Boot不存在问题及解决

    IDEA中程序包Org.Springframework.Boot不存在问题及解决

    这篇文章主要介绍了IDEA中程序包Org.Springframework.Boot不存在问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 浅谈java中的访问修饰符

    浅谈java中的访问修饰符

    这篇文章介绍了java中的访问修饰符,有需要的朋友可以参考一下
    2013-10-10
  • SpringCloud实现服务调用feign与熔断hystrix和网关gateway详细分析

    SpringCloud实现服务调用feign与熔断hystrix和网关gateway详细分析

    这篇文章主要介绍了SpringCloud实现服务调用feign与熔断hystrix和网关gateway,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • 新手初学Java面向对象

    新手初学Java面向对象

    这篇文章主要介绍了Java语言面向对象编程思想之类与对象实例详解,还是十分不错的,这里给大家分享下,需要的朋友可以参考,希望能帮到你
    2021-07-07

最新评论