2.1 KiB
2.1 KiB
实体类与数据库表字段的映射规则
仅适用于Mybatis-Plus框架。
- 数据库表结构字段名称、实体类字段名称,采用驼峰与下划线映射的方式。
@TableField注解中typeHandler等于JacksonTypeHandler.class时,表结构字段默认JSON类型,在spring-boot版本>=4.0应换成Jackson3TypeHandler。- 实体类字段包含
@NotNull注解,如果字段被@Schema注解修饰,需要结合defaultValue属性判断是否需要设置默认值。 - 主键列是否采用MySQL自增序列,取决于实体类被
@TableId注解修饰的字段,要看其type属性,如果是IdType.AUTO则使用自增,否则不需要。 - 如果字段被
@Schema注解修饰,且指定了maxLength属性,按如下原则设置字段类型:- maxLength<=2000,使用VARCHAR
- maxLength>2000且<10000,使用TEXT
- maxLength>10000,使用LONGTEXT
MySQL
| 实体类字段类型 | MySQL字段类型 |
|---|---|
| String | VARCHAT(255) |
| Long | BIGINT |
| Integer | INT |
| LocalDate | DATE |
| LocalDateTime | DATETIME |
| BigDecimal | DECIMAL(14, 2) |
SQLite
| 实体类属性类型 | SQLite字段类型 | 说明 |
|---|---|---|
String |
TEXT |
- |
Long |
INTEGER |
- |
Integer |
INTEGER |
- |
LocalDate |
TEXT |
以yyyy-MM-dd格式字符串存储 |
LocalDateTime |
TEXT |
以yyyy-MM-dd HH:mm:ss格式字符串存储 |
@TableField(typeHandler = JacksonTypeHandler.class) |
TEXT |
配合JacksonTypeHandler自动序列化/反序列化 |
BigDecimal |
TEXT |
用TEXT存储精确数值,避免浮点精度丢失 |
PostgreSQL
| 实体类属性类型 | PostgreSQL字段类型 | 说明 |
|---|---|---|
String |
TEXT |
- |
Long |
BIGINT |
- |
Integer |
INTEGER |
- |
LocalDate |
DATE |
直接使用原生日期类型存储 |
LocalDateTime |
TIMESTAMP |
直接使用原生时间戳类型存储 |
@TableField(typeHandler = JacksonTypeHandler.class) |
TEXT / JSONB |
配合JacksonTypeHandler自动序列化/反序列化;JSONB性能更优且支持索引 |
BigDecimal |
NUMERIC |
用NUMERIC存储精确数值,避免浮点精度丢失 |