当前位置:   article > 正文

Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to ja

exception in thread "main" java.lang.classcastexception: java.math.bigdecima

错误类型提示,如下:

 

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Long
 at demo.spring.jdbc.dao.JDBCTemplatePersonDaoImpl.findById(JDBCTemplatePersonDaoImpl.java:26)
 at demo.spring.test.TestDataSourceInjection.main(TestDataSourceInjection.java:18)

 

根据提示找到了对应的内容,如下:

public class JDBCTemplatePersonDaoImpl implements PersonDao {
 private JdbcTemplate jdbcTemplate;
 //通过IOC注入数据源后,初始化jdbcTemplate对象
 public void setDataSource(DataSource dataSource){
  jdbcTemplate=new JdbcTemplate(dataSource);
 }
 @Override
 public Person findById(Long id) {
  //通过queryForList执行sql语句,返回结果集,结果集类型为Map
  List person=jdbcTemplate.queryForList("select * from person where id="+id.longValue());
  
  for(Iterator it=person.iterator();it.hasNext();){
   Map personMap=(Map) it.next();
   Long p_id=(Long)personMap.get("ID");
   String p_name=(String)personMap.get("NAME");
   Integer p_age=(Integer)personMap.get("AGE");
   
   Person p=new Person();
   p.setId(p_id);
   p.setName(p_name);
   p.setAge(p_age);
   
   return p;
  }
  return null;
 }

}

解决办法:修改其中两条语句,如下:

   Long p_id=((BigDecimal) personMap.get("ID")).longValue();
   Integer p_age=((BigDecimal)personMap.get("AGE")).intValue();

记住:不要忘记import java.math.BigDecimal; 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/604677
推荐阅读
相关标签
  

闽ICP备14008679号