说明:在开发中,我们经常使用树形结构来展示菜单选项,如图:

那么我们在后端怎么去实现这样的一个功能呢?
1、数据库表:department

2、编写sql映射语句

 <select id="selectDepartmentTrees" resultType="com.welb.entity.Department">select * from department<where><if test="updepartmentcode!=null">and UpDepartmentCode=#{updepartmentcode}</if></where></select>

3、创建实体类

public class Department {private String departmentcode;//部门codeprivate String departmentname;//部门名称private String updepartmentcode="0";//上级部门private String departmentdesc;//部门描述private List<Department> childDept =new ArrayList();//部门信息树public String getDepartmentcode() {return departmentcode;}public void setDepartmentcode(String departmentcode) {this.departmentcode = departmentcode == null ? null : departmentcode.trim();}public String getDepartmentname() {return departmentname;}public void setDepartmentname(String departmentname) {this.departmentname = departmentname == null ? null : departmentname.trim();}public String getUpdepartmentcode() {return updepartmentcode;}public void setUpdepartmentcode(String updepartmentcode) {this.updepartmentcode = updepartmentcode == null ? null : updepartmentcode.trim();}public String getDepartmentdesc() {return departmentdesc;}public void setDepartmentdesc(String departmentdesc) {this.departmentdesc = departmentdesc == null ? null : departmentdesc.trim();}public List<Department> getChildDept() {return childDept;}public void setChildDept(List<Department> childDept) {this.childDept = childDept;}
}

4、定义mapper

@Mapper
public interface DepartmentMapper {List<Department>selectDepartmentTrees(Department department);}

5、定义service业务层实现

@Service
@Transactional
public class DepartmentImpl implements IDepartmentService {@ResourceDepartmentMapper departmentMapper;@Overridepublic List<Department> selectDepartmentTrees(Department department) {return departmentMapper.selectDepartmentTrees(department);}
}

6、控制层实现

@RestController
@RequestMapping("department")
public class DepartmentController {@ResourceIDepartmentService departmentService;@ResourceIStationService stationService;/*** 查询所有部门 树形展示所有部门 包含模糊查詢** @return*/@RequestMapping("/treelist")public Object selectAll(Department department) {ModelMap map = new ModelMap();try {List<Department> departmentDtos = getDepartmentList(department);map.put("msg", "查询部门成功");map.put("data", departmentDtos);map.put("code", 0);} catch (Exception e) {e.printStackTrace();map.put("msg", "查询部门失败");map.put("code", 1);}return map;}/*** 递归查询部门* @param department* @return*/private List<Department> getDepartmentList(Department department) {List<Department> departments =departmentService.selectDepartmentTrees(department);if (departments.size()>0){Department department1=new Department();for (int i = 0; i <departments.size() ; i++) {department1.setUpdepartmentcode(departments.get(i).getDepartmentcode());List<Department>dtos=getDepartmentList(department1);departments.get(i).setChildDept(dtos);}}return departments;}
}

7、进行测试,这里我用postmain工具测试,结果如下图

到这里,递归查询部门树形结构数据就完成了

Java 递归查询部门树形结构数据相关推荐

  1. java递归实现树形结构数据

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.树形结构是什么? 二.实现方案 1.stream流递归实现 1.1 实体类 1.2 实现类 2.jdk1.7以下实 ...

  2. oracle树状结构递归,Oracle:递归查询(树形结构数据)

    Oracle树形结构数据-相关知识总结 Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT   *      FROM QIAN ...

  3. Oracle:递归查询(树形结构数据)

    今天要做一个查询功能:查询某用户所属部门,且包含该部门的所有上级部门信息.偶然找到了一个方法,特意来做个笔记.分享给和我一样的菜鸟,哈哈 查询子节点 1 select * 2 from d_arc_d ...

  4. java代码将树形数据输出为excel表格(可以渲染无限级)

    这次的解决方案是采用Springboot项目+swagger+druid连接池+oracle数据库,如有需要请自行更换数据库 pom #jdk版本 <properties><java ...

  5. Java递归查询某个节点下所有子节点多级信息(递归部门查询,递归树形结构数据查询)

    前言 在做项目中我们会遇到树形结构数据,如果我们想要查询某个几点下面所有子节点(多级)数据,此时我们又不知道下面有多少级节点以及节点ID,那么我们就需要使用递归去查询了,当然在数据库中写函数也是可以实 ...

  6. Java 树形结构数据生成--不需要顶级节点

    概要 树形结构数据是后台开发中非常常见的一种数据结构.后台管理系统中必要的一种结构,常见的树形结构数据有,部门树,权限树等等,利用该数据结构可以让你的系统数据展示一目了然,并且为分配这些数据也提供了极 ...

  7. Java 递归查询该部门,及其下属部门,所有用户

    Java 递归查询该部门,及其下属部门,所有用户: Set<User> userSet 作为传入参数,并将其作为返回值, 随着递归查询,执行 userSet.addAll(users); ...

  8. Java 后端实现全国省市区树形结构数据查询

    使用到的sql文件自取 链接:https://pan.baidu.com/s/1YmpGH6UXCgie-T6xUrIwxQ 提取码:regn entity import lombok.Data;im ...

  9. java组装树状结构数据集合_JAVA构建List集合为树形结构

    package com.zving.tree; import java.util.ArrayList; import java.util.List; /** * 树形结构实体类 * @author c ...

最新文章

  1. 在 CentOS7 安装 ELK【转】
  2. JZOJ 5163. 【NOIP2017模拟6.25】PS的烦恼
  3. LeetCode刷题-两数之和(持续更新)
  4. 多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析...
  5. RabbitMq入门(七)消息处理(消息持久化autoDelete、消息确认ACK机制)
  6. SWT、JavaFx十种页面布局快速理解
  7. Zookeeper集群详解
  8. python 装饰器粗浅理解
  9. 启动与关闭VMware Workstation的BAT批处理脚本
  10. STSegmentedControl
  11. 支持带有书签的PDF生成的文本编辑工具Typora
  12. 实习成长之路:MySQL七:事务到底是隔离的还是不隔离的?
  13. SLAM--Pangolin显示相机位姿
  14. 最强数据库工具——IDEA
  15. 面试:Spring Boot的优缺点
  16. PowerDNS Authoritative Server 3.3 发布
  17. GD25Qxxx使用笔记
  18. Ubuntu系统进行复制粘贴文件显示没有权限的解决办法
  19. 模型评价方法及代码实现
  20. 怎么样在Linux上使用AppImage?

热门文章

  1. 【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记
  2. 模拟一个火车站售票小例子
  3. 牛客小白月赛8 F-数列操作 (有序表)
  4. 比FFT还容易明白的NTT(快速数论变换)
  5. 产品故事|你所不知道的语雀画板
  6. Java新生代垃圾收集器
  7. 数学建模推国一最终省一经验总结
  8. Excel VBA合并不同工作簿所有工作表到一张工作表
  9. Linux操作系统PS命令详细 解析
  10. java 当前时间加12小时_Java设置时间的24或12小时机制