如何在jdbc中获取记录相同的列名称值?

时间:2019-03-12 15:35:44

标签: java database jdbc

我已经从db中检索了所有具有名称,电子邮件,id,管理器字段的记录,我需要获取具有相同管理器的所有数据记录并将其保存以列出我该怎么做?

我已经从数据库has中检索了值

 List<Map<String, String> dbData=new ArrayList<>();
while(query.next()){
 LinkedHashMap<String,String> rowData=new LinkedHashMal<>();
 for(columns=1;columns<total columns; columns++){
 rowData.put(columnNames,query.getString(columnNames.get(columns));
 }
 dbData.add(rowData);
}

columnNames是标题列表,其中包含该列的所有标题。

所以我需要获取同一管理者的所有记录并将其导出到单独的Excel文件

2 个答案:

答案 0 :(得分:1)

如果要按某个管理员进行过滤,则必须将该管理员作为查询的WHERE子句包括在内。像这样:

SELECT name, email, id, manager FROM Table WHERE manager = 'manager1'

拥有所有想要的记录后,您可以遍历ResultSet并将它们也添加到列表中。

有关更多信息,您可以检查this link

答案 1 :(得分:0)

首先,您将数据库中的所有行读入Java对象。

假设您将数据读入List<Record>,然后可以使用Java 8流对数据进行分组:

List<Record> rows = ...
Map<String, List<Record>> byManager = rows.stream()
        .collect(Collectors.groupingBy(Record::getManager, Collectors.toList()));

更新

如果记录是将列名映射为字符串值的Map<String, String>,则代码为:

List<Map<String, String>> rows = ...
Map<String, List<Map<String, String>>> byManager = rows.stream()
        .collect(Collectors.groupingBy(row -> row.get("manager"), Collectors.toList()));
相关问题