接触java当中对超大数据的处理,因为mysql数据库对应的字段类型是vachar(50),存储的是纯数字的20位长度的唯一标识码,为了方便唯一标识码自增,采取查询数据库最大值后按通道数量(业务自增量)进行自增。这就涉及要将vachar类型强转为数字类型,已知强转的数据类型为UNSIGNED(最大支持18446744073709551615)或DECIMAL,我这里采用DECIMAL,java对应的类型为BigDecimal。
数据库类型转换测试:
SELECT CONVERT('22222222222222222222',SIGNED ) sn0,
CONVERT('22222222222222222222',UNSIGNED ) sn1,
CAST('2222222222222222222234' AS DECIMAL(20)) sn2,
'22222222222222222222'+0 sn3,
CONVERT('22222222222222222222',DECIMAL(20) ) sn4;
执行结果:
s0 | s1 | s2 | s3 | s4 |
---|---|---|---|---|
-1 | 18 |