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

根据模式,按MySQLOracle

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

无类型覆盖,使用默认