Java目录树的创建与获取

 更新时间:2024年03月31日 09:06:54   作者:Java中的战斗机  
在Java开发中,经常会涉及到生成目录树的需求,本文主要介绍了Java目录树的创建与获取,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

在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目录树创建与获取内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家! 

您可能感兴趣的文章:

相关文章

  • springboot远程debug调试全过程

    springboot远程debug调试全过程

    这篇文章主要介绍了springboot远程debug调试全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 使用MDC快速查询应用接口全部执行日志

    使用MDC快速查询应用接口全部执行日志

    这篇文章主要为大家介绍了使用MDC快速查询应用接口全部执行日志的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Java使用Redis及其优化详解

    Java使用Redis及其优化详解

    大家好,本篇文章主要分享的是Java使用Redis及其优化详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Java通过正则表达式获取域名简单示例

    Java通过正则表达式获取域名简单示例

    在Java中可以使用正则表达式来从字符串中匹配和提取域名,下面这篇文章主要给大家介绍了关于Java通过正则表达式获取域名的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Mybatis集成到Spring容器的详细步骤

    Mybatis集成到Spring容器的详细步骤

    在现在的JavaEE开发过程中,我们经常会使用到Spring+SpringMVC+Mybatis这个组合,那么Mybatis是如何集成到Spring中的呢,下面通过实例代码给大家详细讲解,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • spring-data-jpa实现增删改查以及分页操作方法

    spring-data-jpa实现增删改查以及分页操作方法

    下面小编就为大家分享一篇spring-data-jpa实现增删改查以及分页操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Java中的clone()和Cloneable接口实例

    Java中的clone()和Cloneable接口实例

    这篇文章主要介绍了Java中的clone()和Cloneable接口实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java SpringMVC的自定义异常类

    Java SpringMVC的自定义异常类

    这篇文章主要为大家详细介绍了SpringMVC的自定义异常类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 举例讲解JDK注解的使用和自定义注解的方法

    举例讲解JDK注解的使用和自定义注解的方法

    今天小编就为大家分享一篇关于举例讲解JDK注解的使用和自定义注解的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java list利用遍历进行删除操作3种方法解析

    Java list利用遍历进行删除操作3种方法解析

    这篇文章主要介绍了Java list利用遍历进行删除操作3种方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论

?


http://www.vxiaotou.com