Spring Boot中使用JdbcTemplate遇到的坑

Spring Boot 中使用Spring的JdbcTemplate操纵数据一文中其实已经详细的讲解了JdbcTemplate的使用用法,但是还是想将坑单拎出来讲下。

首先看下这个方法:

乍一看,我想传个泛型T(实际代码执行中,这个T可以是我自定义的一个Bean),然后就能返回个List<T>,也即泛型的集合(纯ORM思想啊!殊不知又挖了个大坑~)

于是乎,出现下面代码:

List<Student> list = jdbcTemplate.queryForList(sql, Student.class);

一执行,发现出异常了:

ERROR org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 8:Incorrect column count: expected 1, actual 8

异常很明了,需要一个,给人家整成了八个,也就是人家不是存List<>的。甚为蹊跷,后一查,发现不是这样的,又跑偏了~

原来这个T,只支持Integer.class String.class 这种单数据类型的,自己定义的Bean不支持。所以我这ORM的想法over了。

敢情如果有封装成某个对象的需求,还得自己动手 。

这个JdbcTemplate还真是无力吐槽~ 彷佛回来了上古时期~!

//可以用这个
List<T> result = jdbcTemplate.query(sql.toString(), new Object[] {queryPara}, 
    new BeanPropertyRowMapper<T>(T.class))  

同时,我还发现不仅是jdbcTemplate.queryForList不能这么使用,queryForObject同样也不能这么使用,而是应该添加new RowMapper接口才能返回自定义的实体类对象。

看到一篇比较详尽的博客:Spring jdbcTemplate中queryForObject以及queryForList返回映射实体使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容