我想用我的数据库字段值创建一个列表。有 2 列,name 和 surname。我想创建一个列表,将所有名称存储在一个字段的名称列中,然后添加到我的 DTO。
这可能吗?
原文由 user1759247 发布,翻译遵循 CC BY-SA 4.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 许可协议
15 回答8.2k 阅读
8 回答5.9k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.2k 阅读✓ 已解决
您可以遵循的步骤:-
List<String>
来存储你所有的名字。像这样声明:-现在,您已获取所有记录并将其存储在
ResultSet
中。所以我假设您可以迭代ResultSet
并从中获取每个values
。您需要使用ResultSet#getString
来获取name
。现在,每次获取一条记录时,获取
name
字段并将其添加到列表中。现在,由于您没有提供有关
DTO
的足够信息,因此您需要找出那部分,如何将此ArrayList
添加到您的DTO
上述
list
surname
name
name
但是,如果两者都需要,则需要创建一个自定义 DTO(FullName)
,其中包含name
和surname
作为字段。并从每个ResultSet
实例化它并将其添加到List<FullName>