【问题标题】:How to get results as array with JdbcTemplate?如何使用 JdbcTemplate 将结果作为数组获取?
【发布时间】:2019-09-10 08:34:49
【问题描述】:
String sql = "SELECT name, age, gender from persons";
List<Map<String, Object>> results = jdbcTemplate.queryForList(sql, params);

问题:我怎样才能得到一个数组List&lt;String[]&gt; 的结果?由于我从每一行中仅选择 3 个值,我知道 result[0] 是名称,或者 results[2] 是性别。

所以我更希望 jdbcTemplate 不返回键值映射,而只返回没有 db 列名的普通数组。

【问题讨论】:

  • 难道没有queryForXXX 版本可以做到这一点吗?猜不到,您应该使用queryForRowset 或更好,使用RowMapper 并将结果直接映射到一些适当的对象。
  • 通常你甚至不应该使用它,而是使用带有RowMapper 并直接映射到你的 DTO 的查询方法。看起来你是在之后做的。
  • 我不想映射到我的 dto。我只需要这些值进行进一步处理。所以我不需要介绍任何类型的 dto 或 map。因此,我认为获取带有值的普通数组是最好的,但是没有这个选项吗?

标签: java sql spring jdbc spring-jdbc


【解决方案1】:
List<String[]> result = jdbcTemplate.queryForList(query, params, String[].class)
List<String> result = jdbcTemplate.queryForList(query, params, String.class)

【讨论】:

    【解决方案2】:
    List<Object[]> result = jdbcTemplate.queryForList(sql).stream().map(row -> row.values().toArray()).collect(Collectors.toList());
    

    或者如果你知道这些列都是字符串值:

    List<String[]> result = jdbcTemplate.queryForList(sql).stream().map(row -> row.values().toArray(new String[row.size()])).collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2020-12-03
      • 2020-09-04
      • 2016-07-11
      • 2016-02-06
      • 2017-02-09
      • 2019-02-19
      相关资源
      最近更新 更多