Type mismatch Can‘t assign java.math.BigDecimal to java.lang.Double

在数据库中通过 sum 查询出来的数值,进行赋值时会进行报错

MyBatis 的 XML 文件类似这样

select sum(xxx) as xxx, sum(yyy) as yyy from ttt t
<where>
    ……
</where>

查询结果是一条记录,我使用 HashMap 进行存放,Dao 层定义类似这样

HashMap<String, Double> getXXXXX(HashMap map);

调用时是这样

HashMap<String, Double> sum = xxxxDao.getXXXXX(map);
if (sum != null) {  
    page.getList().get(i).setXXXX(sum.get("xxx"));
    page.getList().get(i).setYYYY(sum.get("yyy"));
}

然后就报错了,报错如下:

Type mismatch Can't assign java.math.BigDecimal to java.lang.Double

解决方法是,将 HashMap<String, Double> 定义为 HashMap<String, Object> ,然后进行一次转换,转换代码如下:

page.getList().get(i).setXXXX(Double.valueOf(sum.get("xxx").toString()));

将 Object 转换为 String,再将 String 转换为 Double 即可

图片

 

不同场景下,解决 'class java.lang.String' 出现 'argument type mismatch' 错误的方法不同: - **MyBatis 属性赋值异常**:若在 MyBatis 中出现“Could not set property 'id' of 'class com.ldy.eduservice.entity.EduTeacher' with value '1450640362735951873' Cause: java.lang.IllegalArgumentException: argument type mismatch”这类问题,可能是实体类属性与数据库字段类型不匹配。要保证项目中的实体与表中的实体不仅字段名一致,类型也要一致。比如不能把 `date` 写成 `data` 等,需仔细检查并修正类型错误 [^1][^4]。 - **内部类使用问题**:若使用内部类时出现该错误,可能是由于内部类没有添加 `static`,导致程序找不到对应的对象。在 Java 里,内部接口必须是静态的,因为其嵌套在另一个类或接口中,且不依赖于外部类的实例。解决方案是在内部类中添加 `static` [^2]。 - **JavaFX 控件监听方法问题**:在 JavaFX 执行控件监听的方法时,若出现该错误,可将方法的入参 `ActionEvent` 替换为 `MouseEvent`。示例代码如下: ```java import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.input.MouseEvent; import javafx.scene.layout.VBox; public class Main { Label datetime = new Label(); public void showDateTime(MouseEvent event){ System.out.println("登录按钮按下,执行相关逻辑"); Date now = new Date(); DateFormat df = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss"); String dateTimeString = df.format(now); datetime.setText(dateTimeString); } } ``` [^3]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农UP2U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值