【问题标题】:How to get result of multiple records into map int JDBC Template?如何将多条记录的结果转换为 map int JDBC 模板?
【发布时间】:2017-11-29 10:11:58
【问题描述】:

我正在使用 queryForList 来获取结果集的 arrayList,如下例所示:

List<Student> studentsList = null;
String sql = "SELECT * FROM [student]";
try {
    studentsList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class));
} catch (EmptyResultDataAccessException e) {
}
return (ArrayList<Student>) studentsList;

现在我想直接从查询中将此列表的结果放入 keyobject 的映射中。

有什么想法吗?

【问题讨论】:

  • 我没有看到你在任何地方使用 queryForList
  • 您打算在地图中使用什么作为键?
  • @mohammedkhan 的 id ,一个整数 id

标签: java spring-mvc jdbc spring-jdbc jdbctemplate


【解决方案1】:

您无法从查询中获取您的Map。您将需要操作从jdbcTemplate.query 返回的List,以便它为您提供所需的Map,每个键都是学生的ID:

Map<Integer, Student> studentMap = new HashMap<Integer, Student>();
for (Student student : studentsList) {
    studentMap.put(student.getId(), student);
}

如果您使用的是 java 8,则可以使用 Collector:

Map<Integer, Student> result = studentsList.stream().collect(Collectors.toMap(Student::getId, Function.identity()));

【讨论】:

    【解决方案2】:

    使用queryForMap 而不是query。如果您需要按列名映射,这将解决您的问题。

    文档:queryForMap

    【讨论】:

    • queryForMap 不是只用来获取一行,而不是多行吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多