版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
今天使用 Spring JDBC Template 时出现了一个错误:
Incorrect column count: expected 1, actual 24
字面上的意思大概是本应只返回一列,但是实际上返回了24列
需求
根据某个ID返回某一条数据,这数据存在于一个对象中
错误原因分析
最开始的写法是这样的:
return jdbcTemplate.queryForObject(sql, Dealer.class);
后面发现这种写法是错误的,jdbcTemplate.queryForObject(sql, requiredType) 中的 requiredType 的参数只能用基本类型,或者String.class,这样写并不会将查询到的数据映射到实体类中
但是比较奇怪的是,我用Dealer.class编译时也并不会报错= =
解决方法
查看jdbcTemplate时发现,queryForObject有一下方法
根据需求来看,第二个就可以满足我们的要求,具体写法如下:
return jdbcTemplate.queryForObject(sql, new Object[]{}, new BeanPropertyRowMapper<Dealer>(Dealer.class) {
});
OK 问题解决