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;
}
}
分享到:
相关推荐
java.math.BigDecimal 操作类,包含加减乘除、String型加减乘除精度格式化转换计算等
解决mongo数据插入时 报错问题 mogodb插入数据时报错Can't find a codec for class java.math.BigDecimal
标题"A Class for Creating a Trace Log"指出,这是一个关于创建跟踪日志的类的教程或代码示例。在软件开发中,跟踪日志是用于记录程序运行时信息的重要工具,它帮助开发者诊断错误、调试代码以及优化性能。...
此外,Number类也是Java中一些具体数值类型(如Byte、Short、Integer、Long、Float、Double、BigInteger和BigDecimal)的超类。 一、Number类的核心功能 Number类包含了一系列抽象方法,如doubleValue(), float...
Java中的`BigDecimal`类是用于表示和操作高精度浮点数的重要工具,尤其适用于需要进行精确计算的场景,如财务和货币计算。由于基本数据类型`double`和`float`在进行大数值或高精度计算时可能会导致精度丢失,因此`...
- **异常路径**:`java.lang.Object -> java.lang.Throwable -> java.lang.Exception -> java.lang.RuntimeException -> java.lang.IndexOutOfBoundsException -> java.lang.ArrayIndexOutOfBoundsException` ...
Integer integer = bigDecimal.intValue(); System.out.println(integer); // 输出:100 ``` 2. 使用 `setScale()` 和 `intValueExact()` 方法 当需要保持一定的精度或者需要在转换时进行四舍五入时,可以先...
在Java编程语言中,处理大数(大数据量的整数)加法时,通常会使用`java.math.BigDecimal`类。这个类提供了精确的浮点数运算,特别适合于需要高精度计算的情况,如金融计算或者复杂的数学运算。下面将详细讨论`...
Java中BigInteger的数学运算,BigDecimal 加减乘除运算,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大...
JAVA基础:java.math.BigDecimal的使用方法. JAVA基础:java.math.BigDecimal的使用方法.
为了解决这个问题,开发者通常会引入第三方库,比如"BigDecimal.js"。这个库提供了一个名为`BigDecimal`的数据类型,用于实现大数运算,确保结果的精度不受损失。 "BigDecimal.js.zip"是一个压缩包,其中包含了...
在Java编程语言中,`java.lang.Math`类提供了一系列用于执行基本数学运算的方法和常量。这个类包含静态方法和常量,使得开发者无需实例化对象即可直接调用其功能,极大地简化了数学计算的过程。 ### 常量 #### ...
* java.math 是 Java 2 Platform 的一部分,提供了用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 21、网络应用程序:java.net 为实现网络应用程序提供类。 * java.net 是 Java 2...
alert(new BigDecimal("10").add(new BigDecimal("3E+10"))); //- alert(new BigDecimal("10").subtract(new BigDecimal("3E+10"))); //* alert(new BigDecimal("10").multiply(new BigDecimal("3E+10"))); // / ...
在Java中,有内置的`java.math.BigDecimal`类,但JavaScript原生并不支持这样的数据类型。因此,"js_bigdecimal_1_0_1"库可能是将Java的BigDecimal概念移植到了JavaScript中,以便在Web开发中进行高精度计算。 这个...
Java.math 包下计算浮点数和整数...Java.math 包下计算浮点数和整数的类的实例非常重要, BigInteger 和 BigDecimal 两个类是 Java.math 包中的核心类,它们提供了高精度的整数和浮点数运算,用于解决复杂的数学问题。
JavaScript版的`BigDecimal`类库是基于Java原版`BigDecimal`的改编,旨在提供与Java版本相似的功能,以支持大整数和任意精度的浮点数计算。这个库通常包含以下关键特性: 1. **构造函数**:创建一个`BigDecimal`...
在Java编程语言中,`NumberFormatException`是一个常见的运行时异常,它发生在尝试将字符串转换为特定数字类型(如`Integer`, `Double`, `Float`等)时,如果字符串不能被解析为对应类型的数值,就会抛出这个异常。...
NUMBER(p, s)对应的 JDBC 类型是 java.sql.Types.DECIMAL,Java 类型也是 java.math.BigDecimal。 3. 日期和时间类型 DATE 对应的 JDBC 类型是 java.sql.Types.DATE,Java 类型是 java.sql.Date。TIMESTAMP ...