Jdbc 模板。 IncorrectResultSetColumnCountException:列数不正确
JdbcTemplate. IncorrectResultSetColumnCountException: Incorrect column count
我使用 Spring JdbcTemplate 来查询几个值的列表:
List<String[]> tankNames = jdbcTemplate.queryForList(
"select name, country, level from tanklist", String[].class);
得到以下错误:
org.springframework.jdbc.IncorrectResultSetColumnCountException:
Incorrect column count: expected 1, actual 3
- 为什么我使用 String[] 时需要 1?
- 如何在不创建这 3 个值的对象的情况下获取多列值的列表(可能在字符串数组中)?
我的最终目标是将此响应转换为字符串列表。
我做了以下事情:
List<Map<String, Object>> allTankNames = jdbcTemplate.queryForList(
"select name, country, level from tanklist");
我的目标是将其转换为字符串列表:
List<String> tankNamesWithInfo = allTankNames.stream().map(m -> (String) m.get("name") + m.get("country") + m.get("level")).collect(Collectors.toList());
您可以使用以下方法来简化您的实施
<T> List<T> query(String sql, RowMapper<T> rowMapper)
如果要获取字符串数组 (String[]) 的列表,即每行的列都是字符串数组的元素,请使用以下
List<String[]> allTankNames = jdbcTemplate.query(
"select name, country, level from tanklist",
(rs, rowNum) -> new String[] {rs.getString(1), rs.getString(2), rs.getString(3)});
但是,您的代码建议您希望每行获得一个字符串并连接所有列,为此,请使用以下
List<String> allTankNames = jdbcTemplate.query(
"select name, country, level from tanklist",
(rs, rowNum) -> String.format("%s %s %s", rs.getString(1),rs.getString(2), rs.getString(3)));
我使用 Spring JdbcTemplate 来查询几个值的列表:
List<String[]> tankNames = jdbcTemplate.queryForList(
"select name, country, level from tanklist", String[].class);
得到以下错误:
org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 3
- 为什么我使用 String[] 时需要 1?
- 如何在不创建这 3 个值的对象的情况下获取多列值的列表(可能在字符串数组中)?
我的最终目标是将此响应转换为字符串列表。
我做了以下事情:
List<Map<String, Object>> allTankNames = jdbcTemplate.queryForList(
"select name, country, level from tanklist");
我的目标是将其转换为字符串列表:
List<String> tankNamesWithInfo = allTankNames.stream().map(m -> (String) m.get("name") + m.get("country") + m.get("level")).collect(Collectors.toList());
您可以使用以下方法来简化您的实施
<T> List<T> query(String sql, RowMapper<T> rowMapper)
如果要获取字符串数组 (String[]) 的列表,即每行的列都是字符串数组的元素,请使用以下
List<String[]> allTankNames = jdbcTemplate.query(
"select name, country, level from tanklist",
(rs, rowNum) -> new String[] {rs.getString(1), rs.getString(2), rs.getString(3)});
但是,您的代码建议您希望每行获得一个字符串并连接所有列,为此,请使用以下
List<String> allTankNames = jdbcTemplate.query(
"select name, country, level from tanklist",
(rs, rowNum) -> String.format("%s %s %s", rs.getString(1),rs.getString(2), rs.getString(3)));