我想创建一个包含数据库字段值的列表。 有2列,姓名和姓氏。 我想创建一个列表,在列表中存储名称列中的所有名称,然后添加到我的DTO。
这可能吗?
答案 0 :(得分:6)
您可以遵循的步骤: -
首先,你需要一个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
仅包含name
而非surname
,因为您只需要name
。但如果你想要两者,你需要创建一个自定义DTO (FullName)
包含name
和surname
字段。并实例化它
每个ResultSet
并将其添加到List<FullName>
答案 1 :(得分:2)
是的。你有什么尝试?
要访问数据库,您需要use JDBC并执行查询,并为您提供ResultSet
。
我会创建一个名为FullName
的类,其中包含2个字符串字段name
和surname
。只需使用
rs.getString("NAME"); // column name
rs.getString("SURNAME");
e.g。
List<FullName> fullnames = new ArrayList<FullName>();
while (rs.next()) {
fullnames.add(new FullName(rs));
}
请注意,我正在通过ResultSet
对象直接填充对象。您可以选择使用2个名称字段来实现构造函数。
另请注意,我正在创建一个Fullname
对象。因此,名字/姓氏是分开的,你可以自由地在以后添加首字母等。您可能更愿意重命名此Person
,这样您就可以自由添加其他属性。
答案 2 :(得分:2)
List<DTO> list =
DSL.using(connection)
.fetch("SELECT first_name, last_name FROM table")
.into(DTO.class);
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));
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());
我已经将Java 8用于Spring JDBC / Apache DbUtils示例,但也可以使用旧版本的Java来完成。