java 递归查询组织机构树

java树形结构递归查询 /** * 根据等级查询类目树 * * @param level * @return */ @Override public List queryCategoryTree(Integer level) { //查询当前级别下类目 List list = categoryDAO.list(level); //组装好的类目树,返回前端 List categoryTree = new ArrayList(); //所有类目 List allDTOList = new ArrayList(); if (CollectionUtils.isEmpty(list)) { return categoryTree; } for (CategoryDO categoryDO : list) { allDTOList.add(new CategoryTreeDTO().convertDOToDTO(categoryDO)); } //当前等级类目 categoryTree = allDTOList.stream().filter(dto -> level.equals(dto.getLevel())).collect(Collectors.toList()); for (CategoryTreeDTO categoryTreeDTO : categoryTree) { //组装类目为树结构 assembleTree(categoryTreeDTO, allDTOList,Constants.CATEGORY_MAX_LEVEL - level); } return categoryTree; } /** * 组装树 * * @param categoryTreeDTO * @param allList * @param remainRecursionCount 剩余递归次数 * @return */ public CategoryTreeDTO assembleTree(CategoryTreeDTO categoryTreeDTO, List allList, int remainRecursionCount) { remainRecursionCount--; //最大递归次数不超过Constants.CATEGORY_MAX_LEVEL-level次,防止坏数据死循环 if(remainRecursionCount < 0){ return categoryTreeDTO; } String categoryCode = categoryTreeDTO.getCategoryCode(); Integer level = categoryTreeDTO.getLevel(); //到达最后等级树返回 if (Constants.CATEGORY_MAX_LEVEL == level) { return categoryTreeDTO; } //子类目 List child = allList.stream().filter(a -> categoryCode.equals(a.getParentCode())).collect(Collectors.toList()); if (null == child) { return categoryTreeDTO; } categoryTreeDTO.setChildren(child); //组装子类目 for (CategoryTreeDTO dto : child) { assembleTree(dto, allList,remainRecursionCount); } return categoryTreeDTO; } 立即下载

需求:不要在数据库层写存储过程或者调用数据库自带方法实现,因为数据库有可能是MySQL或者是oracle。

核心递归代码:

/**
	 * @Description: 递归查询机构 
	 * @param @param departList
	 * @param @param departId    设定文件 
	 * @return void    返回类型 
	 * @throws
	 */
	private void getDepartmentList(List<SysDepartment> departList, Integer departId) {
		try {
			List<SysDepartment> list = departmentService.getDListByParentId(departId);
			if (null != list && list.size()>0) {
				for (int i = 0; i < list.size(); i++) {
					SysDepartment department = list.get(i);
					departList.add(department);
					getDepartmentList(departList, department.getDepartId());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

调用代码:

List<SysDepartment> departList = departmentService.getDListByParentId(Integer.parseInt(departId));
				if (null != departList && departList.size() > 0) {
					SysDepartment department = departList.get(0);
					getDepartmentList(departList, department.getDepartId());
					returnCode = Const.RETURN_CODE_1;
					map.put("department", departList);
				}


SQL:

-- ----------------------------
--  Table structure for `SYS_DEPARTMENT`
-- ----------------------------
DROP TABLE IF EXISTS `SYS_DEPARTMENT`;
CREATE TABLE `SYS_DEPARTMENT` (
  `DEPART_ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '机构ID',
  `DEPART_NAME` varchar(20) DEFAULT NULL COMMENT '机构名称',
  `PARRENT_ID` int(11) DEFAULT NULL COMMENT '上级ID',
  `DEPART_CODE` varchar(20) DEFAULT NULL,
  `DEPART_DESC` text,
  PRIMARY KEY (`DEPART_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='组织机构表';

-- ----------------------------
--  Records of `SYS_DEPARTMENT`
-- ----------------------------
BEGIN;
INSERT INTO `SYS_DEPARTMENT` VALUES ('1', '中国电子', '0', null, null), ('2', '子公司1', '1', null, null), ('3', '子公司2', '1', null, null), ('4', '子部门1', '2', null, null), ('5', '子部门2', '2', null, null), ('6', '子部门3', '2', null, null), ('7', '子部门4', '2', null, null), ('8', '科室1', '4', null, null), ('9', '科室2', '4', null, null);
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;


Frida提取Cocos游戏XXTEA密钥的实战方法论 XXTEA是一种轻量级分组加密算法,广泛用于移动端游戏通信保护;其128位密钥的安全性直接决定网络协议逆向成败。在Cocos引擎生态中,密钥常以静态常量、JNI动态传递或Native运行时派生三种形态存在,导致传统静态分析失效。Frida凭借跨Java/Native注入能力与内存实时观测优势,成为捕获密钥‘出生瞬间’的关键工具——尤其适用于hook xxtea_encrypt函数入口、监控JNI参数传递、设置内存断点追踪派生过程等场景。本文聚焦Cocos2d-x与Cocos Creator项目,覆盖从密钥识 阅读详情

相关推荐

RADIOML 2018.01A调制信号数据集介绍及处理

RadioML 2018.01A 由 DeepSig 发布,是专门针对自动调制识别(Automatic Modulation Recognition, AMR)和无线信号分类研究设计的基准数据集。它在原有 RadioML 2016.10a 的基础上,扩展并精细化了信道仿真模型,使得信号更接近真实无线环境下的表现。该数据集广泛用于机器学习模型的训练与评估,为各类深度学习算法提供了统一、可重复的实验条件。

weixin_56527269的博客 1901

Java实现递归查询树结构

我们在实际开发中,肯定会用到树结构,如部门树、菜单树等等。Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示。今天,咱们就来说说怎么样将List集合转换成TreeList。

sinat_40572875的博客 6497

3D视觉入门必看:深度图、点云图、IR图、RGB图像到底有什么区别?

本文深入解析了3D视觉中深度图、点云图、IR图与RGB图像的核心区别。深度图记录像素距离,是连接2D与3D的桥梁;点云图是显式的三维坐标集合;IR图感知红外光强度;RGB图像则提供颜色纹理。理解其信息维度和应用场景,是进行机器人导航、三维重建等任务的基础。

year5的博客 348

java递归与反向递归(逆向递归)查询树tree结构根据关键字过滤数据

递归查询树tree结构有两种做法: 第一种,递归查询数据库结构,第二种,一次性将数据库表中的所有数据查出来,然后再递归查出来的list集合,第一种做法适合数据量较少的tree结构,因为要一直查询数据库数据量大时速度回相对较慢,所以数据量大时建议使用第二种方法 反向递归(逆向递归)查询树tree结构根据关键字过滤数据,大家有么有遇到过这个问题: 这是一个树结构,默认查询全部 我想要根

leon-这个程序员不闷骚的博客 4万+

设备树实践:从零构建一个嵌入式板级的设备树描述

本文详细介绍了如何从零开始为嵌入式Linux系统构建设备树(Device Tree),以i.MX6ULL处理器为例,涵盖硬件分析、设备树语法、外设配置及调试技巧。通过实践指导,帮助开发者掌握设备树编写,实现硬件与软件的高效对接,提升嵌入式开发效率。

plum99的博客 307

如何让Arduino IDE支持你手里的STM32 nucleo开发板

Arduino IDE开发环境在默认情况下不支持STM32 NUCLEO开发板,只有通过添加附加开发板管理包才能使用。目前为止,只有一部分板子支持使用Arduino IDE开发环境进行开发,分别是 Nucleo F207ZG, Nucleo F429ZI, Nucleo F030R8, Nucleo F091RC, Nucleo F103RB, Nucleo F303RE, Nucl...

mzw72188552的专栏 8972

Java之使用递归查询多级树形结构数据(多级菜单),包括查询父级菜单

Java之使用递归查询多级树形结构数据(多级菜单),包括查询父级菜单

qq_19891197的博客 1435

C#上位机开发入门:从基础到进阶的全方位指南

C#作为一门现代化编程语言,具备强大的功能和广泛的生态支持,适合用于开发各种类型的上位机应用。通过学习并掌握UI开发、通信协议、多线程编程、数据库操作等技能,你可以打造出稳定、易用、性能优异的上位机软件。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 8317

Java树形结构递归查询

先找到所有的根节点,再通过循环遍历所有的根节点,找到每个跟节点的子节点,最终形成一个树形结构。

qq_41451744的博客 1267

微信小程序:使用mqtt手机屏幕锁屏后导致中断问题,让mqtt在手机黑屏后依然能保持连接及持续后台运行接收或处理任务,详解微信小程序MQTT在应用退到后台或手机熄屏的情况下自动检测并重连【强制保活】

微信小程序切后台后MQTT连接无法维持,微信小程序MQTT一旦用户锁屏、切换到后台或手机熄屏,连接就会断开,导致无法继续监听和处理业务消息,微信小程序mqtt保活方案,微信小程序屏幕锁屏或息屏导致mqtt连接中断怎么办,如何解决MQTT不能黑屏持续连接的问题,微信小程序应用退到后台 MQTT连接断开问题解决,苹果ios手机,安卓手机,uniapp微信小程序mqtt断开怎么解决,后台应用怎么保活,uni-app中MQTT连接频繁断开如何解决?应用退到后台后MQTT连接断开以及常连接断连的问题,微信小程序、MQ

✅ 精选推荐文章 3027

文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)

本文将手把手教会你使用jieba库进行中文分词和去除停用词,这是学会文本分析的必经之路!

m0_64336780的博客 4万+

Java递归查询树形结构(详解)

Java递归查询树形结构

qq_45443475的博客 3925

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java 递归查询组织机构树

需求:现有一个A集合(机构id集合),需要利用A集合查询出集合中所有机构的子级机构,层级(不知道一共有多少级),最终返回所有的子级机构(就是返回一个childOrganList,不包括A集合) 文章目录代码实现聊聊递归递归示例1.计算1~n的和2.递归打印多级目录 代码实现 /** * 根据父级id集合查询所有子孙级id集合 * @param organIdList 父级机构id集合 * @param childOrg 子级机构id集合 * @return.

zhuzicc的博客 4058

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

组织机构树

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33700350的博客 762

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java查询每个部门总人数(包含每个部门层级的总数)

需求:最近需要统计每个部门的用户数量,最开始想的比较简单,通过部门id去查询,结果忘记了部门下面有子集部门,这样通过一般的条件查询就只能查出当前部门的人数。2.在递归里面通过部门节点路径来。1.用递归的方式查询出部门树。

java李阳勇的博客 1892

组织机构树形结构查询

查询目录的无限层级树形结构是一个常见的需求,比如文件管理器、网盘、公司组织机构等场景。实现这种结构需要递归遍历目录,并将目录信息组织成树形结构。

欧阳方超的专栏 1088

JSP实现组织机构树的方法

今天比较累,先把代码贴出来,改天再详细说明.这个实现有一个严重的缺陷,就是单树比较庞大的时候(节点超过600),点击复选框按钮会有比较明显的延迟(2秒钟左右).同事说是JS执行效率的问题. //level--节点级别,num--同一节点级别,id--标识号,tableName--用于生成标签的ID,checkboxName--用于生成标签的Name //显示机构树 private St

3931

树在java中的应用,利用递归创建树,在java中的应用

public class SspOrgTreeBean { /** * @Fields serialVersionUID: TODO */ private static final long serialVersionUID = 1L; private String id; private String text; privat...

m0_37708405的博客 525

部门树java递归实现

部门树实现 public List<DeptTree> queryDeptTreeList(){ //查询部门表全部数据 List<DeptTree> allDept = baseMapper.queryDeptTreeList(); //过滤getParentId() == 0:查出所有一级部门 List<DeptTree> treeList = allDept.stream().filter(dept -> dept.getParen

qq_38058050的博客 2281

java 组织机构树的拼装--递归算法

递归算法的应用-树形结构数据的拼装树对象:package com.qkkj.hardwaremgmt.database.resultmap;import java.util.List;import com.qkkj.hardwaremgmt.database.beans.SysMenu;/** *  * @Title: SysMenuResultMap.java   * @Package com....

dongchengxuyuan的博客 1万+

组织结构树: java递归实现 或 mysql迭代实现

组织结构树: java递归实现 或 mysql迭代实现 前言 最近开发中遇到了查询组织机构树问题,记录并分享一下(仅供借鉴)。 一,实体类 public Class SysOrg { private String sysOrgId; //主键 private String tenantId; //租户ID private String tenantName; //租户名称 private String orgId; //组织机构编码

Mr_daChen的博客 2645

机构树的数据库设计与查询构想-使用递归算法

需求 设计机构树,查询实验室所有机构 以某一节点为根节点,查询局部机构树 实现 思路: 自身嵌套查询 代码递归查询 数据库设计 CREATE TABLE `sys_dept` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', `name` varchar(20) CHARACTER SET utf8mb4 COLLAT...

weixin_43404791的博客 849

机构层级列表递归展示查询,并优化SQL查询

文章目录问题背景原始方案①按照层级进行递归查询② 定义递归体进行递归查询③ 查询结果(部分省略截图)④原始方案总结优化需求优化方案①查询出所有机构信息作为数据源,后面使用代码手动处理② 递归体的实现③ 查询结果(部分省略截图)④ 新方案总结总结 问题背景 接口需求:查询所有有效机构信息,并按照机构层级进行展示,用于前端的机构树展示 接口定义如下: 很明显,这样的机构列表需要进行递归查询。 原始方...

shenzhou_yh的博客 4466

mysql组织机构树迭代查询

转载自https://blog.youkuaiyun.com/u011935772/article/details/71419527 组织机构表结构 建表语句 drop table if exists Organize; /*=========================================...

我就是我的博客 3870

java:组织机构树实现名称模糊查询

在开发的很多场景中,需要我们对树形结构进行模糊查询,这个时候就需要用到递归来实现定位,效果如下图: 话不多说,直接上代码吧: 首先是对json的实例化对象处理 public List<PositionGroupModel> jsonToPositionGroupModel(JSONArray objArray){ List<PositionGroupModel> list = new ArrayList<>(); if (Col

weixin_41377877的博客 2543

从mysql查询机构表用java解析成机构树

数据库表: 对应实体:@Entity @Table(name = "t_sys_org") public class SysOrgDTO { private Long id; private String name; private Long parentId; @Transient private List<SysOrgDTO> childOrg = n

Amy_Queen的博客 1602
上一篇: SpringMVC 的 Controller 返回各种视图的处理方式
下一篇: 你所谓的诗和远方,不过是虚荣感作祟
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值