关于不同数据类型在不同数据库的适配
最后更新:2025-08-12 22:44:07
|
状态:未完成
TypeMetadataAlias类中维护了 每个数据类型在每个数据库中对应的实际类型以及长度、有效位数、小数位数的支持
如mysql环境中在设置类型时调用column.setType("DOUBLE(10)")
会先到alias中找到DOUBLE在mysql对应的的实际类型
再判断是否支持长度、有效位数、小数位数
格式如下
如果遇到映射不对的,可以调用以下方法覆盖
TypeMetadataHolder.reg(DatabaseType type, String name, TypeMetadata metadata, boolean override)
如mysql环境中在设置类型时调用column.setType("DOUBLE(10)")
会先到alias中找到DOUBLE在mysql对应的的实际类型
再判断是否支持长度、有效位数、小数位数
格式如下
枚举变量 代码中输入的类型 对应的标准类型 是否忽略 长度、有效位、小数位
ILLEGAL表示不支持,会抛出异常 (0:不忽略必须有; 1:忽略; 2:有值就不忽略,没值就忽略;
3:有效位与小数位相互依赖,少一个值就全忽略或者说要么都有要么都没有)
TINYTEXT ("TINYTEXT" ,StandardTypeMetadata.TINYTEXT , 1, 1, 1),
VARBINARY ("VARBINARY" ,StandardTypeMetadata.VARBINARY , 0, 1, 1),
VARCHAR ("VARCHAR" ,StandardTypeMetadata.VARCHAR , 0, 1, 1),
YEAR ("YEAR" ,StandardTypeMetadata.YEAR , 1, 1, 1),
ACLITEM ("ACLITEM" ,StandardTypeMetadata.NONE ),
AGG_STATE ("AGG_STATE" ,StandardTypeMetadata.NONE ),
AGGREGATE_METRIC_DOUBLE ("aggregate_metric_double" ,StandardTypeMetadata.NONE ),
ALIAS ("alias" ,StandardTypeMetadata.NONE ),
ARRAY ("ARRAY" ,StandardTypeMetadata.NONE ),
BFILE ("BFILE" ,StandardTypeMetadata.ILLEGAL , -1, -1, -1),
BIGSERIAL ("BIGSERIAL" ,StandardTypeMetadata.BIGINT , 1, 1, 1),
BINARY_DOUBLE ("BINARY_DOUBLE" ,StandardTypeMetadata.DOUBLE , 1, 3, 3),
BINARY_FLOAT ("BINARY_FLOAT" ,StandardTypeMetadata.FLOAT , 1, 2, 3),
INTERVAL_DAY_MINUTE ("INTERVAL DAY TO MINUTE" ,StandardTypeMetadata.NONE ),
INTERVAL_DAY_SECOND ("INTERVAL DAY TO SECOND" ,StandardTypeMetadata.NONE ),
INTERVAL_HOUR ("INTERVAL HOUR" ,StandardTypeMetadata.NONE ),
如果遇到映射不对的,可以调用以下方法覆盖
TypeMetadataHolder.reg(DatabaseType type, String name, TypeMetadata metadata, boolean override)