Mybatis Batch insert Java BigDecimal to SQL Server decimal(18,2) 无法正常工作

Mybatis Batch insert Java BigDecimal to SQL Server decimal(18,2) not working correctly

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

我在 java 中使用 BigDecimal 和 SQL 服务器列 Decimal(18,2)

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

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

我该如何避免这个问题?

我想我找到了解决方案

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

还有部分值为0,我没有在程序中设置比例

结果是用最小规模插入所有记录的批次

在我用

设置每个 BigDecimal 值之后
new BigDecimal("37.99").setScale(2)

数据库值正确。

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