美文网首页
2019-01-23 Spring JdbcTemplate的q

2019-01-23 Spring JdbcTemplate的q

作者: 木人呆呆 | 来源:发表于2019-01-23 15:02 被阅读3次

Spring JdbcTemplate的queryForList(String sql , Class<T> elementType)易错使用

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

       首先看下这个方法:[图片上传失败...(image-cc7d11-1548226880110)]

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

      于是乎,出现下面代码:
  1. 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的。甚为蹊跷,后一查,发现不是这样的,又跑偏了~
    

[图片上传失败...(image-38d393-1548226880110)]

    原来这个T,只支持Integer.class String.class 这种单数据类型的,自己定义的Bean不支持。

解决方法:给你想要返回的(即自己封装的dto)加上一层映射即可

        StringBuffer sbItem=new StringBuffer();
        sbItem.append("select * from wsbs_person_pay_item where payid="+ppayDTO.getId());
        List<PersonPayItemDTO> ppItemList=jdbctemplate.query(sbItem.toString(),new BeanPropertyRowMapper(PersonPayItemDTO.class));

相关文章

网友评论

      本文标题:2019-01-23 Spring JdbcTemplate的q

      本文链接:https://www.haomeiwen.com/subject/fwnjjqtx.html