47 lines
2.1 KiB
Markdown
47 lines
2.1 KiB
Markdown
# 实体类与数据库表字段的映射规则
|
|
|
|
仅适用于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`存储精确数值,避免浮点精度丢失 | |