首页 > 解决方案 > Mybatis Batch 将 Java BigDecimal 插入 SQL Server decimal(18,2) 无法正常工作

问题描述

看到我们使用的每一个建议BigDecimal来避免精度问题。

BigDecimal在 java 中使用 SQL Server 列Decimal(18,2)

当我用new BigDecimal("37.99")它插入值时,数据库中的值是 38。

我也尝试过使用new BigDecimal(str).setScale(2, RoundingMode.UNNECESSARY)并且仍然在数据库中获得 38 。

我应该如何避免这个问题?

标签: javasql-serverdecimalmybatis

解决方案


我想我找到了解决方案

我正在使用 myBatis 批量插入来插入值,

有些值为0,我没有在程序中设置比例

使用最小比例来插入所有记录

在我设置每个 BigDecimal 值之后

new BigDecimal("37.99").setScale(2)

数据库值正确。

希望任何人都可以得到这个答案的帮助。


推荐阅读