如何将一个对象中的List对象添加为子集,且父结构不存在重复数据

在数据库操作中,面临一个任务,即如何构建一个客户下的联系人树结构,确保父级结构中没有重复数据。原有的尝试通过MySQL联表查询导致数据重复。解决方案是使用MySQL结果集的一对多映射,将联系人作为子列表存储在每个客户对象中,从而避免了Java遍历去重的复杂性,并成功生成了期望的树形结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何将一个对象中的List对象添加为子集,且父结构不存在重复数据

有这样一个需求,把一个客户名下的联系人构建成下拉树结构。如 :

A公司

----联系人:张三

----联系人:李四

B公司

----联系人:王五

----联系人:赵六

客户数据结构

CREATE TABLE `os_customer` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(20) DEFAULT NULL COMMENT '客户公司名',
  `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户id',
  `create_user` bigint(20) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime(3) DEFAULT NULL COMMENT '创建时间',
  `update_user` bigint(20) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime(3) DEFAULT NULL COMMENT '更新时间',
  `del_flag` tinyint(1) DEFAULT NULL COMMENT '删除标识(0:否 1:是)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='客户表';

已添加数据

客户-客户联系人表

CREATE TABLE `os_customer_user` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `customer_id` bigint(20) DEFAULT NULL COMMENT '客户公司id',
  `user_id` bigint(20) DEFAULT NULL COMMENT '客户联系人id',
  `del_flag` tinyint(1) DEFAULT NULL COMMENT '是否删除(0:否 1:否)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='客户联系人-客户公司联系表';

已添加数据

客户联系人表

CREATE TABLE `sys_user` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值