java.math.BigDecimal cannot be cast to java.lang.Integer

Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer
at dao.impl.JDBCTemplatePersonDaoImpl.findById(JDBCTemplatePersonDaoImpl.java:30)
错误原因:从数据库取出来数值型的值为:BigDecimal
错误代码:
//这行并未报错,只有运行时才出错
int p_age=(Integer) personMap.get("AGE");
正确:int p_age=((BigDecimal) personMap.get("AGE")).intValue();

原代码类如下:
package dao.impl;

import java.math.BigDecimal;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;

import dao.PersonDao;
import entity.Person;

public class JDBCTemplatePersonDaoImpl implements PersonDao {

private JdbcTemplate jdbcTemplate;
//通过IOC注入数据源后,初始始化jdbcTemplate对象
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public Person findById(Long id) {
//通过queryForList执行sql语句,返回结果集,结果集类型为Map
List person=jdbcTemplate.queryForList("select * from person where id="+id.longValue());
Iterator it=person.iterator();
while(it.hasNext()){
Map personMap=(Map) it.next();
Long p_id=((BigDecimal)personMap.get("ID")).longValue();
String p_name=(String) personMap.get("NAME");
int p_age=((BigDecimal) personMap.get("AGE")).intValue();

Person p=new Person();
p.setId(p_id);
p.setName(p_name);
p.setAge(p_age);
return p;
}
return null;

}



}


猜你喜欢

转载自amflytogether.iteye.com/blog/2155003