mybatis的decimal精度缺失
时间: 2023-11-12 13:04:31 浏览: 127
MyBatis 对于 MySQL 中 Decimal 类型的处理是有一些问题的,可能会导致精度缺失。主要原因是 MyBatis 默认使用 `java.math.BigDecimal` 类型来映射 MySQL 中的 Decimal 类型,而这两种类型的精度表示方式是不同的。
为了解决这个问题,可以尝试以下两种方法:
1. 在 MyBatis 配置文件中添加 `useBigDecimalForMoney=true` 属性,强制 MyBatis 使用 `java.math.BigDecimal` 来映射 MySQL 中的 Decimal 类型。
```
<configuration>
<settings>
<setting name="useBigDecimalForMoney" value="true"/>
</settings>
</configuration>
```
2. 在 Mapper.xml 文件中使用 `CAST` 函数手动将 Decimal 类型转换为 `java.math.BigDecimal` 类型。
```
SELECT CAST(decimal_column AS DECIMAL(10,2)) AS decimal_column FROM table_name;
```
这样可以保证精度不丢失。
阅读全文