This commit is contained in:
8ga committed 2026-09-26 16:09:11 +08:00
1 parent 4a1756edb4
commit 6798a567a2
12 files changed
+827

No files matched your search

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