我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java 递归查询部门树形结构数据的实践

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java 递归查询部门树形结构数据的实践

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

在这里插入图片描述

那么我们在后端怎么去实现这样的一个功能呢?

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;//部门code

    private 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 {
    @Resource
    DepartmentMapper departmentMapper;
    
    @Override
    public List<Department> selectDepartmentTrees(Department department) {
        return departmentMapper.selectDepartmentTrees(department);
    }
}

6、控制层实现


@RestController
@RequestMapping("department")
public class DepartmentController {
    @Resource
    IDepartmentService departmentService;
    @Resource
    IStationService stationService;

    
    @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;
    }

    
    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 递归查询部门树形结构数据的实践的文章就介绍到这了,更多相关Java 递归查询树形结构内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java 递归查询部门树形结构数据的实践

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java递归实现树形结构数据

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

java递归实现树形结构数据完整案例

递归算法的代码比较简洁,可读性较好;但是在实际的业务处理中会出现多次的重复调用,如果处理不好,很容易出现StackOverflowError报错,这篇文章主要给大家介绍了关于java递归实现树形结构数据的相关资料,需要的朋友可以参考下
2023-05-17

Java递归实现树形结构的方式有哪些

这篇文章主要介绍“Java递归实现树形结构的方式有哪些”,在日常操作中,相信很多人在Java递归实现树形结构的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java递归实现树形结构的方式有哪些”的疑
2023-07-04

Java怎么用递归实现树形结构的工具类

本文小编为大家详细介绍“Java怎么用递归实现树形结构的工具类”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么用递归实现树形结构的工具类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。需求描述有时候,我
2023-07-05

详解Java递归实现树形结构的两种方式

在开发的过程中,很多业务场景需要一个树形结构的结果集进行前端展示,也可以理解为是一个无限父子结构,常见的有报表指标结构、菜单结构等,这篇文章主要介绍了Java递归实现树形结构的两种方式,需要的朋友可以参考下
2022-11-13

MySQL查询树形结构数据的两种方法

目录1. 递归查询2. 闭包表对于mysql查android询树形结构,可以使用递归查询或者闭包表来实现。以下是两种常用的方法:1. 递归查询使用递归查询可以遍历树形结构,获取父节点和子节点的关系。假设有一个名为 your_table
MySQL查询树形结构数据的两种方法
2023-11-11

利用递归算法怎么将数据库解析成Java树形结构

利用递归算法怎么将数据库解析成Java树形结构?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、准备表结构及对应的表数据a、表结构:create table T
2023-05-31

springboot构造树形结构数据并查询的方法是什么

本篇内容主要讲解“springboot构造树形结构数据并查询的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot构造树形结构数据并查询的方法是什么”吧!因为项目需要,页
2023-06-25

递归在 C++ 数据结构中的妙用:栈和树的实现

递归在 c++++ 数据结构中的应用:栈:通过后进先出 (lifo) 结构递归实现栈。树:通过分层结构递归实现树,支持插入和深度计算等操作。递归为处理嵌套结构提供了简洁高效的解决方案,使数据结构的实现更加直观和易于维护。递归在 C++ 数据
递归在 C++ 数据结构中的妙用:栈和树的实现
2024-05-04

递归查询在数据去重和清洗中的实践

递归查询在数据去重和清洗中的实践主要涉及到使用递归查询来处理具有层级结构或父子关系的数据,从而有效地去除重复数据并清洗数据。以下是关于递归查询在数据去重和清洗中的实践的相关信息:递归查询在数据去重中的应用递归查询在数据去重中的应用主要体
递归查询在数据去重和清洗中的实践
2024-09-08

递归查询在复杂数据关系映射中的实践

递归查询是一种在复杂数据关系映射中常用的技术,它可以帮助我们更有效地处理层次结构或者网状结构的数据分类管理:在电商平台、内容管理系统等应用中,分类管理是一个常见的需求。分类之间可能存在多层级的嵌套关系,使用递归查询可以方便地获取任意分类下的
递归查询在复杂数据关系映射中的实践
2024-09-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录