1. 程式人生 > >Spring JdbcTemplate # queryForList(String sql , Class elementType)

Spring JdbcTemplate # queryForList(String sql , Class elementType)

           一直用ORM,今天用JdbcTemplate再次抑鬱了一次。

           首先看下這個方法:

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

          於是乎,出現下面程式碼:

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

          一執行,發現出異常了:

         ERROR [com.ruhuiyun.studentmanager.aop.LogAdvice] - 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還真是無力吐槽~ 彷佛回來了上古時期~!

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