Spring Boot中使用JdbcTemplate遇到的坑

Spring Boot 中使用Spring的JdbcTemplate操縱數(shù)據(jù)一文中其實(shí)已經(jīng)詳細(xì)的講解了JdbcTemplate的使用用法,但是還是想將坑單拎出來(lái)講下。

首先看下這個(gè)方法:

乍一看,我想傳個(gè)泛型T(實(shí)際代碼執(zhí)行中,這個(gè)T可以是我自定義的一個(gè)Bean),然后就能返回個(gè)List<T>,也即泛型的集合(純ORM思想啊!殊不知又挖了個(gè)大坑~)

于是乎,出現(xiàn)下面代碼:

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

一執(zhí)行,發(fā)現(xiàn)出異常了:

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

異常很明了,需要一個(gè),給人家整成了八個(gè),也就是人家不是存List<>的。甚為蹊蹺,后一查,發(fā)現(xiàn)不是這樣的,又跑偏了~

原來(lái)這個(gè)T,只支持Integer.class String.class 這種單數(shù)據(jù)類型的,自己定義的Bean不支持。所以我這ORM的想法over了。

敢情如果有封裝成某個(gè)對(duì)象的需求,還得自己動(dòng)手 。

這個(gè)JdbcTemplate還真是無(wú)力吐槽~ 彷佛回來(lái)了上古時(shí)期~!

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

同時(shí),我還發(fā)現(xiàn)不僅是jdbcTemplate.queryForList不能這么使用,queryForObject同樣也不能這么使用,而是應(yīng)該添加new RowMapper接口才能返回自定義的實(shí)體類對(duì)象。

看到一篇比較詳盡的博客:Spring jdbcTemplate中queryForObject以及queryForList返回映射實(shí)體使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容