DDL类型映射
huiche-ddl对内置支持的数据库方言提供了很多默认的类型映射,详见下表,个别数据库方言会有覆写
默认的类型映射(部分类型会被方言覆写)
长度length和精度scale如果通过@Column指定了,会优先按其设定的重新设定默认的长度和精度
实际数据库方言,如果不是默认类型,会通过重写内部类型方法来取代默认的类型或直接覆盖java类型重写指定类的类型
| java类型 | 内部类型方法 | 默认数据库类型 |
|---|---|---|
| boolean/Boolean | booleanType() | BOOLEAN |
| byte/Byte | tinyintType() | TINYINT |
| short/Short | smallintType() | SMALLINT |
| char/Character | charType() | CHAR(1) |
| int/Integer | intType() | INTEGER |
| long/Long | bigintType() | BIGINT |
| float/Float | decimalType() | DECIMAL(10,2) |
| double/Double | decimalType() | DECIMAL(10,2) |
| byte[] | blobType() | BLOB |
| String | varcharType() | VARCHAR(100) |
| StringBuilder | varcharType() | VARCHAR(100) |
| StringBuffer | varcharType() | VARCHAR(100) |
| Currency | charType() | CHAR(3) |
| Locale | varcharType() | VARCHAR(64) |
| Path | varcharType() | VARCHAR(64) |
| UUID | varcharType() | VARCHAR(36) |
| BigDecimal | decimalType() | DECIMAL(10,2) |
| BigInteger | decimalType() | DECIMAL(10,0) |
| InputStream | blobType() | BLOB |
| Reader | clobType() | CLOB |
| LocalDateTime | timestrampType() | TIMESTAMP |
| LocalDate | dateType() | DATE |
| LocalTime | timeType() | TIME |
| Instant | timestrampType() | TIMESTAMP |
| Duration | bigintType() | BIGINT |
| OffsetDateTime | timestrampType() | TIMESTAMP |
| ZonedDateTime | timestrampType() | TIMESTAMP |
| ZoneId | VARCHAR(32) | |
| Date | timestrampType() | TIMESTAMP |
| java.sql.Time | timeType() | TIME |
| java.sql.Date | dateType() | DATE |
| java.sql.Timestamp | timestrampType() | TIMESTAMP |
| Enum<?> 枚举类型EnumBy.NAME | varcharType() | VARCHAR(最大条目名长度) |
| Enum<?> 枚举类型非EnumBy.NAME | intType() | 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
无类型覆盖,使用默认