你会在Java中映射BigDecimal/在MySQL中映射Hibernate是什么类型?

2022-09-01 03:54:29

在经历了上一个开发的代码训练之后,我意识到我需要移动所有基于金钱的列,以不使用浮点数学。在Java方面,这意味着使用BigDecimal,但是当使用Hibernate / JPA和MySQL 5时,什么是合适的MySQL数据类型来创建该列?


答案 1

十进制和数字。

对于 DECIMAL 和 NUMERIC 类型,建议的 Java 映射是 java.math.BigDecimal。java.math.BigDecimal 类型提供数学运算,以允许将 BigDecimal 类型与其他 BigDecimal 类型、整数类型和浮点类型相加、减去、乘以和除以。

建议用于检索 DECIMAL 和 NUMERIC 值的方法是 ResultSet.getBigDecimal。JDBC 还允许以简单的字符串或 char 数组的形式访问这些 SQL 类型。因此,Java程序员可以使用getString来接收十进制或数字结果。但是,这使得将 DECIMAL 或 NUMERIC 用于货币值的常见情况变得相当尴尬,因为这意味着应用程序编写者必须对字符串执行数学运算。也可以将这些 SQL 类型作为任何 Java 数值类型进行检索。

在此处查看更多详细信息。


答案 2