jdbcTemplate爬坑之queryForList---Incorrect column count: expected 1, actual 2

先看看jdbcTemplate.queryForList这个方法,有7个传参形式,我们就看第一个,我也就是被第一个坑了下,以我图片中的代码为例,我想查询出所有的user,我用jdbcTemplate,他既然提供了queryForList接口,并且支持传一个class类型进去,那么这不就是告诉我这个方法可以直接返回List<User>嘛,我也是这么做的:
在这里插入图片描述
但是当我运行之后结果却是:
在这里插入图片描述诶?啥意思,期望返回一列,实际返回两列?但是select * FROM USER确实是应该返回两列啊,我实际场景的sql比这个复杂,我最开始以为是sql的问题,结果去检查了sql确认sql没问题,然后再去看queryForList这个方法才发现问题:
在这里插入图片描述
what???getSingleColumnRowMappersingleColumnRowMapper,感情构建的mapper只有一个列啊?
看下报错的地方:
在这里插入图片描述
返回结果列不等于1就抛异常,好吧,看来singleColumnRowMapper这个不能拿来查对象了,那怎么办呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看起来就是这样了,所以我们的实现代码应该是:
在这里插入图片描述
既然这样,那queryForList是干嘛的呢?
在这里插入图片描述
总结:
queryForList只支持返回单列对象结果,或者返回List<Map<String,Object>>自己去组对象,如果想直接返回对象集合,用query(sql, BeanPropertyRowMapper.newInstance(T.class));

猜你喜欢

转载自blog.csdn.net/qq1049545450/article/details/112844582