要列出的结果集

新手上路,请多包涵

我想用我的数据库字段值创建一个列表。有 2 列,name 和 surname。我想创建一个列表,将所有名称存储在一个字段的名称列中,然后添加到我的 DTO。

这可能吗?

原文由 user1759247 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 329
2 个回答

您可以遵循的步骤:-

  • 首先,你需要有一个 List<String> 来存储你所有的名字。像这样声明:-
   List<String> nameList = new ArrayList<String>();

  • 现在,您已获取所有记录并将其存储在 ResultSet 中。所以我假设您可以迭代 ResultSet 并从中获取每个 values 。您需要使用 ResultSet#getString 来获取 name

  • 现在,每次获取一条记录时,获取 name 字段并将其添加到列表中。

   while(resultSet.next()) {
      nameList.add(resultSet.getString("name"));
  }

  • 现在,由于您没有提供有关 DTO 的足够信息,因此您需要找出那部分,如何将此 ArrayList 添加到您的 DTO

  • 上述 list surname name name 但是,如果两者都需要,则需要创建一个自定义 DTO (FullName) ,其中包含 namesurname 作为字段。并从每个 ResultSet 实例化它并将其添加到 List<FullName>

原文由 Rohit Jain 发布,翻译遵循 CC BY-SA 3.0 许可协议

不幸的是,JDBC 没有提供任何方法来方便地在单行代码中执行此操作。但是还有其他的 API,比如 jOOQ (免责声明:我在 jOOQ 背后的公司工作):

 List<DTO> list =
DSL.using(connection)
   .fetch("SELECT first_name, last_name FROM table")
   .into(DTO.class);

或者 Spring JDBC

 List<DTO> list =
new JdbcTemplate(new SingleConnectionDataSource(connection, true))
   .query("SELECT first_name, last_name FROM table", (rs, rowNum) ->
       new DTO(rs.getString(1), rs.getString(2));

或者 Apache DbUtils

 List<DTO> list =
new QueryRunner()
   .query(connection,
          "SELECT first_name, last_name FROM table",
          new ArrayListHandler())
   .stream()
   .map(array -> new DTO((String) array[0], (String) array[1]))
   .collect(Collectors.toList());

我在 Spring JDBC / Apache DbUtils 示例中使用了 Java 8,但也可以使用旧版本的 Java 来完成。

原文由 Lukas Eder 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题