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