我在SQL数据库中有一个表,其中值的数据类型是BIGINT(20),我需要将这些数据送到Java逻辑中进行处理。
BIGINT(20)
在Java中应该使用什么合适的 * 数据类型 * 来存储返回的BIGINT(20)值?
我想用Long,但也有BigInteger,不知道什么是好的或合适的。
Long
BigInteger
fivyi3re1#
MySQL BIGINT:最小值(-2^63),最大值(2^63-1)。最大无符号值(2^64-1)。https://dev.mysql.com/doc/refman/8.0/en/integer-types.htmlJava Long:最小值(-2^63),最大值(2^63-1)。最大无符号值(2^64-1)。https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
因此,这两种类型的大小相同:)
8cdiaqws2#
这取决于数据库服务器。Java long始终以8字节实现,因为它是标准的一部分。在MSSQL上,bigint类型是8个字节,因此它是一个完美的匹配。
long
bigint
pbossiut3#
Long是数据库中大整数的完美Map
aiqt4smr4#
BIGINT类型不是SQL标准的一部分,因此不能保证它在所有数据库中都能正常工作。但是,至少MSSQL、MySQL、Oracle、Postgresql和IBM DB2都同意使用8字节(其中大多数是有符号的,但在DB2中是无符号的63位值)。因为Java Long也是64位的,所以它应该可以正常工作。因为long比BigIntegers快得多,所以你几乎肯定应该使用long。
4条答案
按热度按时间fivyi3re1#
MySQL BIGINT:最小值(-2^63),最大值(2^63-1)。最大无符号值(2^64-1)。https://dev.mysql.com/doc/refman/8.0/en/integer-types.html
Java Long:最小值(-2^63),最大值(2^63-1)。最大无符号值(2^64-1)。https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
因此,这两种类型的大小相同:)
8cdiaqws2#
这取决于数据库服务器。Java
long
始终以8字节实现,因为它是标准的一部分。在MSSQL上,
bigint
类型是8个字节,因此它是一个完美的匹配。pbossiut3#
Long是数据库中大整数的完美Map
aiqt4smr4#
BIGINT类型不是SQL标准的一部分,因此不能保证它在所有数据库中都能正常工作。但是,至少MSSQL、MySQL、Oracle、Postgresql和IBM DB2都同意使用8字节(其中大多数是有符号的,但在DB2中是无符号的63位值)。
因为Java Long也是64位的,所以它应该可以正常工作。因为long比BigIntegers快得多,所以你几乎肯定应该使用long。