Skip to content

DDL类型映射 ​

huiche-ddl对内置支持的数据库方言提供了很多默认的类型映射,详见下表,个别数据库方言会有覆写

默认的类型映射(部分类型会被方言覆写) ​

长度length和精度scale如果通过@Column指定了,会优先按其设定的重新设定默认的长度和精度

实际数据库方言,如果不是默认类型,会通过重写内部类型方法来取代默认的类型或直接覆盖java类型重写指定类的类型

java类型内部类型方法默认数据库类型
boolean/BooleanbooleanType()BOOLEAN
byte/BytetinyintType()TINYINT
short/ShortsmallintType()SMALLINT
char/CharactercharType()CHAR(1)
int/IntegerintType()INTEGER
long/LongbigintType()BIGINT
float/FloatdecimalType()DECIMAL(10,2)
double/DoubledecimalType()DECIMAL(10,2)
byte[]blobType()BLOB
StringvarcharType()VARCHAR(100)
StringBuildervarcharType()VARCHAR(100)
StringBuffervarcharType()VARCHAR(100)
CurrencycharType()CHAR(3)
LocalevarcharType()VARCHAR(64)
PathvarcharType()VARCHAR(64)
UUIDvarcharType()VARCHAR(36)
BigDecimaldecimalType()DECIMAL(10,2)
BigIntegerdecimalType()DECIMAL(10,0)
InputStreamblobType()BLOB
ReaderclobType()CLOB
LocalDateTimetimestrampType()TIMESTAMP
LocalDatedateType()DATE
LocalTimetimeType()TIME
InstanttimestrampType()TIMESTAMP
DurationbigintType()BIGINT
OffsetDateTimetimestrampType()TIMESTAMP
ZonedDateTimetimestrampType()TIMESTAMP
ZoneIdVARCHAR(32)
DatetimestrampType()TIMESTAMP
java.sql.TimetimeType()TIME
java.sql.DatedateType()DATE
java.sql.TimestamptimestrampType()TIMESTAMP
Enum<?> 枚举类型EnumBy.NAMEvarcharType()VARCHAR(最大条目名长度)
Enum<?> 枚举类型非EnumBy.NAMEintType()INTEGER
其他类型fallbackType()根据是否指定长度处理
其他类型,指定长度时varcharType()VARCHAR(指定的长度)
其他类型,未指定长度时jsonType()JSON

主流数据库类型覆盖 ​

MySQL ​

重写的方法数据库类型
booleanType()BIT(1)
intType()INT
clobType()TEXT

PostgreSQL ​

重写的方法数据库类型
booleanType()BOOL
tinyintType()INT2
smallintType()INT2
intType()INT4
bigintType()INT8
charType()BPCHAR
decimalType()NUMERIC
blobType()BYTEA
clobType()TEXT

Oracle ​

重写的方法数据库类型
varcharType()VARCHAR2
decimalType()NUMBER
booleanType()NUMBER(1)
tinyintType()NUMBER(3)
smallintType()NUMBER(4)
intType()NUMBER(9)
bigintType()NUMBER(18)
timeType()TIMESTAMP
jsonType()CLOB

SQLServer ​

重写的方法数据库类型
booleanType()BIT
tinyintType()SMALLINT
intType()INT
varcharType()NVARCHAR
blobType()VARBINARY(4000)
clobType()NVARCHAR(4000)
timestrampType()DATETIME2

MariaDB ​

重写的方法数据库类型
booleanType()BIT(1)
intType()INT
clobType()TEXT
jsonType()TEXT

DB2 ​

重写的方法数据库类型
tinyintType()SMALLINT
jsonType()CLOB

国产数据库类型覆盖 ​

Oceanbase ​

根据模式,按MySQL或Oracle

DM达梦 ​

重写的方法数据库类型
booleanType()BIT
jsonType()CLOB

内存或嵌入式类型覆盖 ​

H2 ​

重写的方法数据库类型
varcharType()CHARACTER VARYING
charType()CHARACTER
blobType()BINARY VARYING(4000)
clobType()CHARACTER VARYING(4000)

HSQL ​

重写的方法数据库类型
charType()CHARACTER
jsonType()CLOB

SQLite ​

无类型覆盖,使用默认