1 mysql bigint unsigned vs java.lang.Long
在 MySQL 数据库中,UNSIGNED BIGINT
可表示的范围是 0 到 18,446,744,073,709,551,615。在 Java 中,long
类型的取值范围是 -9,223,372,036,854,775,808
到 9,223,372,036,854,775,807
,不能完全覆盖 UNSIGNED BIGINT
的范围。
2 java处理数据库中的 UNSIGNED BIGINT
类型
在处理数据库中的 UNSIGNED BIGINT
类型时,不同的场景可能需要不同的处理方式。以下是如何在 Java 中针对 B 端和 C 端业务处理 UNSIGNED BIGINT
类型的数据。
2.1 B 端业务场景
在 B 端业务中,如果业务主键使用 UNSIGNED BIGINT
类型且当前实际使用范围远未达到 LONG
类型的上限(92,233,720,368.55 亿),可以使用 Long
类型承接。
例如,假设一个商家管理系统的商家表的主键 ID 是 UNSIGNED BIGINT
,但考虑到当前中国的企业数量大约是一亿左右,用 Long
类型来承接是足够的。
2.2 C 端业务场景
在 C 端业务中,特别是像订单 ID 这样高速增长的情况,UNSIGNED BIGINT
的范围可能会超过 LONG
类型的上限。在这种情况下,需要使用 java.math.BigInteger
来处理。
示例代码
import java.sql.<