Spring jdbc模板。IncorrectResultSetColumnCountException:列计数不正确
我使用Spring JdbcTemplate查询几个值的列表:Spring jdbc模板。IncorrectResultSetColumnCountException:列计数不正确,spring,spring-jdbc,jdbctemplate,Spring,Spring Jdbc,Jdbctemplate,我使用Spring JdbcTemplate查询几个值的列表: List<String[]> tankNames = jdbcTemplate.queryForList( "select name, country, level from tanklist", String[].class); List tankNames=jdbcTemplate.queryForList( “从储罐列表中选择名称、国家/地区、等级”,字符串[]。类别); 获取以
List<String[]> tankNames = jdbcTemplate.queryForList(
"select name, country, level from tanklist", String[].class);
List tankNames=jdbcTemplate.queryForList(
“从储罐列表中选择名称、国家/地区、等级”,字符串[]。类别);
获取以下错误:
org.springframework.jdbc.IncorrectResultSetColumnCountException:
列计数不正确:预期为1,实际为3
List<Map<String, Object>> allTankNames = jdbcTemplate.queryForList(
"select name, country, level from tanklist");
List allTankNames=jdbcTemplate.queryForList(
“从列表中选择名称、国家/地区、级别”);
我的目标是将其转换为字符串列表:
List<String> tankNamesWithInfo = allTankNames.stream().map(m -> (String) m.get("name") + m.get("country") + m.get("level")).collect(Collectors.toList());
List 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)
列表查询(字符串sql、行映射器行映射器)
如果您想获取字符串数组(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 allTankNames=jdbcTemplate.query(
“从列表中选择名称、国家/地区、级别”,
(rs,rowNum)->新字符串[]{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)));
List allTankNames=jdbcTemplate.query(
“从列表中选择名称、国家/地区、级别”,
(rs,rowNum)->String.format(“%s%s%s”,rs.getString(1),rs.getString(2),rs.getString(3));
非常感谢!这是最好的解决办法。