首页 > 数据库 >java 查询数据库并生成多层children

java 查询数据库并生成多层children

时间:2024-08-24 10:26:19浏览次数:9  
标签:java parent rs children 查询数据库 organization id

首先,定义一个表示组织结构的简单类:

public class Organization {
    private int id;
    private int parentId;
    private String name;
    private List<Organization> children;
 
    // 省略构造函数、getter和setter
}

然后,编写一个方法来查询数据库并构建多层嵌套的children列表:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
 
public class OrganizationService {
 
    public List<Organization> getOrganizationHierarchy(int rootId) throws Exception {
        List<Organization> organizations = new ArrayList<>();
        try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/yourdatabase", "username", "password");
             PreparedStatement pstmt = conn.prepareStatement("SELECT id, parent_id, name FROM organization WHERE parent_id = ?");
             ResultSet rs = pstmt.executeQuery()) {
            
            while (rs.next()) {
                Organization organization = new Organization();
                organization.setId(rs.getInt("id"));
                organization.setParentId(rs.getInt("parent_id"));
                organization.setName(rs.getString("name"));
                organization.setChildren(getChildren(organization.getId(), conn)); // 递归获取子组织
                organizations.add(organization);
            }
        }
        return organizations;
    }
 
    private List<Organization> getChildren(int parentId, Connection conn) throws Exception {
        List<Organization> children = new ArrayList<>();
        try (PreparedStatement pstmt = conn.prepareStatement("SELECT id, parent_id, name FROM organization WHERE parent_id = ?");) {
            pstmt.setInt(1, parentId);
            try (ResultSet rs = pstmt.executeQuery()) {
                while (rs.next()) {
                    Organization child = new Organization();
                    child.setId(rs.getInt("id"));
                    child.setParentId(rs.getInt("parent_id"));
                    child.setName(rs.getString("name"));
                    child.setChildren(getChildren(child.getId(), conn)); // 递归获取子组织的子组织
                    children.add(child);
                }
            }
        }
        return children;
    }
}

在这个例子中,getOrganizationHierarchy 方法用于获取根节点的组织层级结构,而 getChildren 方法用于递归地获取一个组织的所有子组织。注意,这里假设你已经有了JDBC驱动和数据库配置信息,并且数据库中有一个名为 organization 的表,其中包含 idparent_id 和 name 字段。

标签:java,parent,rs,children,查询数据库,organization,id
From: https://www.cnblogs.com/liuswi/p/18377489

相关文章

  • 哈夫曼树和哈夫曼编码详解(包含Java代码实现)
    目录什么是哈夫曼树?如何构造哈夫曼树?构造过程代码实现哈夫曼树的结构构建哈夫曼树并计算WPL值测试代码什么是哈夫曼编码?如何构建哈夫曼编码?构建过程代码实现什么是哈夫曼树?哈夫曼树又称为最优树,是一类带权路径长度最短的树,在实际中有着广泛的应用。介绍哈夫曼树......
  • 在Java中常见的池化技术
    什么是池化技术池化技术的原理可以用一个生活中的比喻来理解。 想象有一个图书馆,里面有很多人需要借书和还书。如果没有任何管理措施,每次有人借书时,图书馆管理员都要去仓库找一本新的书拿出来给读者,等读者还书时,管理员又要把书放回仓库。这样的过程非常耗时耗力,而且仓库里......
  • 基于Java+Vue的采购管理系统:提高决策效率(项目代码)
        前言:采购管理系统是一个综合性的管理平台,旨在提高采购过程的效率、透明度,并优化供应商管理。以下是对各个模块的详细解释:一、供应商准入供应商注册:供应商通过在线平台进行注册,填写基本信息和资质文件。资质审核:系统对供应商提交的资质文件进行自动或人工审核,确保......
  • 009java jsp SSM springboot月度员工绩效考核管理系统绩效指标管理(源码+文档+PPT+任务
     项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:window......
  • 015java jsp SSM springboot在线视频课程教育学习平台系统(源码+文档+PPT+开题+运行视
     项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:window......
  • Java 12 新特性—Switch 表达式
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • Java 12 新特性—新增 String API
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 基于java教师课堂教学质量评价系统设计与实现
    课题背景高等学校的根本任务是培养人才,课堂教学是高校完成人才培养的重要环节,因此,教师教学质量的高低对学生掌握和运用知识的程度有着密不可分的作用,为了保证教师的教学质量,教学评价成为了各高校衡量教师教学质量的重要方式之一。目前,教师“听课”和学生“学期末教师课程评......
  • Java实现MQTT通信(发布订阅消息)
    文章目录前言一、相关pom依赖二、相关代码1.MQTT工具类2.MQTT回调函数3.订阅消息4.发布消息三、安装mosquitto1.mosquitto简介2.下载四、安装MQTT.fx1.MQTT.fx简介2.下载3.使用五、java订阅消息六、java发布消息前言MQTT是一种轻量级的物联网通信协议,基于客户端-......
  • java计算机毕业设计智慧社区养老服务系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人口老龄化趋势的加剧,传统的家庭养老模式面临前所未有的挑战。智慧社区养老服务系统的应运而生,正是响应了这一社会变迁的迫切需求。在快节奏的现......