【问题标题】:How to only return String objects from JdbcTemplate queryForList?如何仅从 JdbcTemplate queryForList 返回字符串对象?
【发布时间】:2018-04-26 11:51:28
【问题描述】:

默认情况下,queryForList() 将每个 for 作为Map<String, Object> 返回。对象可以是普通的Stringjava.sql.Timestamp等。

List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, params);

问题:我怎样才能将任何值返回为String.class?所以我会有一个Map&lt;String, String&gt;

我试过了:jdbcTemplate.queryForList(sql, params, Map&lt;String, String&gt;.class) 但该语句似乎无效,无法编译。

【问题讨论】:

  • JdbcTemplate 在内部使用JdbcUtils.getResultSetValue(ResultSet, int) 从结果集中提取值。它是类型敏感的,因此将 SQL 类型映射到 Java 类型。您可以在 SQL 选择语句中将所有列强制转换为 varchar,也可以按照 @membersound 的建议使用自定义 RowMapper。

标签: java spring spring-jdbc


【解决方案1】:

也许有更好的方法,但以下方法可行:

jdbcTemplate.query(sql, params, new ColumnMapRowMapper() {
    @Override
    protected Object getColumnValue(ResultSet rs, int index) {
       return rs.getString(index);
    }
}

【讨论】:

  • 如何打印?结果会是什么?
  • 结果是从方法jdbcTemplate.query返回的,当然你可以随意处理。
猜你喜欢
  • 2013-12-22
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
相关资源
最近更新 更多