java中查询的集合包含全部信息(主表信息包含子表信息),如何组装成父子类型的数据返回
时间: 2023-12-10 07:42:19 浏览: 28
假设你有一个包含主表和子表信息的查询结果,其中主表的每一行都对应着一些子表数据。那么你可以按照以下步骤将其组装成父子类型的数据返回:
1. 创建一个 Map 对象,用于存储父子类型的数据。其中键为主表数据的唯一标识,值为一个包含该主表数据以及对应的所有子表数据的对象。
2. 遍历查询结果,对于每一行数据,首先从中取出主表数据和子表数据。
3. 判断该主表数据是否已经存在于 Map 中,如果不存在,则创建一个新的父子类型的对象,并将其存入 Map 中。
4. 如果该主表数据已经存在于 Map 中,则直接取出对应的父子类型的对象。
5. 将当前行的子表数据添加到父子类型的对象中。
6. 继续遍历查询结果,直到所有数据都被处理完毕。
7. 将 Map 中的所有值转换为一个 List 对象,并返回该对象即可。
以下是一个示例代码,仅供参考:
```java
Map<String, ParentChildData> dataMap = new HashMap<>();
while (resultSet.next()) {
String parentId = resultSet.getString("parent_id");
String childId = resultSet.getString("child_id");
// 从结果集中取出主表数据和子表数据
ParentChildData parentChildData = dataMap.get(parentId);
if (parentChildData == null) {
parentChildData = new ParentChildData(parentId);
dataMap.put(parentId, parentChildData);
}
parentChildData.addChildData(childId);
// 将子表数据添加到父子类型的对象中
}
List<ParentChildData> resultList = new ArrayList<>(dataMap.values());
return resultList;
```
其中,`ParentChildData` 类可以定义如下:
```java
public class ParentChildData {
private String parentId;
private List<String> childIds;
public ParentChildData(String parentId) {
this.parentId = parentId;
this.childIds = new ArrayList<>();
}
public void addChildData(String childId) {
this.childIds.add(childId);
}
// 省略 getter 和 setter 方法
}
```
在上面的示例代码中,`ParentChildData` 类表示父子类型的数据,其中 `parentId` 表示主表数据的唯一标识,`childIds` 表示对应的子表数据的唯一标识列表。在遍历查询结果时,对于每一行数据,我们将其子表数据添加到对应的 `ParentChildData` 对象中。最终,我们将所有的 `ParentChildData` 对象转换为一个 List 对象,返回即可。