This commit is contained in:
8ga
2026-07-25 16:09:54 +08:00
parent dd0bce7f8a
commit ef1a3ad86e
6 changed files with 6 additions and 8 deletions

44
java-orm.md Normal file
View File

@@ -0,0 +1,44 @@
# 实体类与数据库表书写规范
- 数据库表结构字段名称、实体类字段名称,采用驼峰与下划线映射的方式。
- 实体类字段包含`@NotNull`注解,需要结合`@Schema`注解中的`defaultValue`属性判断是否需要设置默认值。
- 主键列是否采用MySQL自增序列取决于实体类被`@TableId`注解修饰的字段,要看其`type`属性,如果是`IdType.AUTO`则使用自增,否则不需要。
- 如果`@Schema`注解指定了`maxLength`属性,按如下原则设置字段类型:
- 数值小于或等于2000使用VARCHAR
- 数值大于2000且小于10000使用TEXT
- 数值大于10000使用LONGTEXT
- 实体类的属性类型与表结构的字段类型映射关系:
- String默认VARCHAT(255)
- Long默认BIGINT
- Integer默认INT
- LocalDate默认DATE
- LocalDateTime默认DATETIME
- `@TableField`注解中`typeHandler`等于`JacksonTypeHandler.class`表结构字段默认JSON类型
- BigDecimal默认DECIMAL(14, 2)
请根据以上规范结合下文代码示例生成建表语句和Java实体类代码。
## MySQL建表语句示例
```sql
CREATE TABLE `example_table` (
`id` BIGINT NOT NULL COMMENT 'ID',
`str_field` VARCHAR(32) NOT NULL COMMENT '字符串`,
`int_field` INT DEFAULT NULL COMMENT '`,
`long_field` BIGINT DEFAULT NULL COMMENT '长整数`,
`decimal_field` DECIMAL(14, 2) DEFAULT NULL COMMENT '`,
`date_field` DATE NOT NULL COMMENT '日期类型`,
`time_field` DATETIME NOT NULL COMMENT '`,
`state` VARCHAR(32) NOT NULL COMMENT '状态only_read、read_write',
`json_field` JSON DATETIME NULL COMMENT 'JSON类型'
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='示例表';
```
## Java实体类示例
[java-bean.md](./java-bean.md#数据库实体类示例)
## 枚举类代码示例
[java-enums.md](./java-enums.md)