Incorrect column count: expected 1, actual 24

今天使用 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有一下方法
Incorrect column count: expected 1, actual 24_第1张图片
根据需求来看,第二个就可以满足我们的要求,具体写法如下:

        return jdbcTemplate.queryForObject(sql, new Object[]{}, new  BeanPropertyRowMapper<Dealer>(Dealer.class) {
        });

OK 问题解决

你可能感兴趣的:(遇到的坑)