我使用Spring JdbcTemplate查询几个值的列表:
List<String[]> tankNames = jdbcTemplate.queryForList(
"select name, country, level from tanklist", String[].class);
出现以下错误:
org.springframework.jdbc.IncorrectResultSetColumnCountException: 列数不正确:预期为1,实际为3
我的最终目标是将该响应转换为字符串列表。
答案 0 :(得分:1)
您可以改用以下方法来简化实现
<T> List<T> query(String sql, RowMapper<T> rowMapper)
如果要获取String数组(String [])的列表,即每一行的列都是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)));
答案 1 :(得分:0)
我做了以下事情:
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());