From 37083d9b3b0c6d626d73793444589b33b4b979a8 Mon Sep 17 00:00:00 2001 From: En Date: Thu, 19 Mar 2026 10:51:04 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=BF=AE=E6=94=B9=E4=B8=BB=E9=94=AE?= =?UTF-8?q?=E7=AD=96=E7=95=A5=E4=B8=BA=E6=95=B0=E6=8D=AE=E5=BA=93=E8=87=AA?= =?UTF-8?q?=E5=A2=9E=EF=BC=88=E4=B8=8D=E5=86=8D=E4=BD=BF=E7=94=A8=E9=9B=AA?= =?UTF-8?q?=E8=8A=B1=E7=AE=97=E6=B3=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将实体类主键策略从 ASSIGN_ID(雪花算法)改为 AUTO(数据库自增) - 更新 BaseEntity 基类:@TableId(type = IdType.AUTO) - 更新所有表结构示例:id BIGINT PRIMARY KEY AUTO_INCREMENT - 更新中间表示例:主键类型从 VARCHAR(32) 改为 BIGINT - 统一使用 Long 类型作为 ID 字段类型 原因: - 数据库自增简单可靠,便于调试和数据迁移 - 避免雪花算法在分布式环境下的时钟回拨问题 - 对于本项目规模,自增 ID 完全满足需求 - 与现有数据库表结构保持一致(如 course_collection 等表) --- docs/统一开发规范.md | 49 +++++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/docs/统一开发规范.md b/docs/统一开发规范.md index d923655..d3326ce 100644 --- a/docs/统一开发规范.md +++ b/docs/统一开发规范.md @@ -1298,7 +1298,7 @@ CREATE TABLE t_user_role ( -- ✅ 推荐:不使用外键约束 CREATE TABLE t_user_role ( - id BIGINT PRIMARY KEY COMMENT '主键 ID(雪花算法)', + id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID(数据库自增)', user_id BIGINT NOT NULL COMMENT '用户 ID', role_id BIGINT NOT NULL COMMENT '角色 ID', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', @@ -1452,14 +1452,14 @@ t_{实体 A}_{实体 B} public class ClassTeacher { @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) - @TableId(type = IdType.ASSIGN_ID) - private String id; + @TableId(type = IdType.AUTO) + private Long id; @Schema(description = "班级 ID", requiredMode = Schema.RequiredMode.REQUIRED) - private String classId; + private Long classId; @Schema(description = "教师 ID", requiredMode = Schema.RequiredMode.REQUIRED) - private String teacherId; + private Long teacherId; // === 业务属性字段 === @Schema(description = "角色", example = "teacher", requiredMode = Schema.RequiredMode.REQUIRED) @@ -1490,16 +1490,9 @@ public class ParentStudentMapping { } // 冗余 #### 5. 主键策略 ```java -// 推荐:使用 ASSIGN_ID(雪花算法)- 适用于有业务属性的中间表 -@TableId(type = IdType.ASSIGN_ID) -private String id; - -// 或:使用复合主键(适用于纯关联表,无业务属性) -@TableId -private String parentId; - -@TableId -private String studentId; +// 推荐:使用 AUTO_INCREMENT(数据库自增)- 适用于所有表 +@TableId(type = IdType.AUTO) +private Long id; ``` #### 6. 唯一索引约束 @@ -1548,9 +1541,9 @@ CREATE UNIQUE INDEX uk_class_teacher ON t_class_teacher(class_id, teacher_id); **表结构:** ```sql CREATE TABLE t_parent_student ( - id VARCHAR(32) PRIMARY KEY COMMENT '主键 ID(雪花算法)', - parent_id VARCHAR(32) NOT NULL COMMENT '家长 ID', - student_id VARCHAR(32) NOT NULL COMMENT '学生 ID', + id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID(数据库自增)', + parent_id BIGINT NOT NULL COMMENT '家长 ID', + student_id BIGINT NOT NULL COMMENT '学生 ID', relationship VARCHAR(20) COMMENT '关系:father/mother/other', is_primary TINYINT DEFAULT 1 COMMENT '是否主要联系人', created_by VARCHAR(50) COMMENT '创建人', @@ -1585,14 +1578,14 @@ import java.time.LocalDateTime; public class ParentStudent { @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) - @TableId(type = IdType.ASSIGN_ID) - private String id; + @TableId(type = IdType.AUTO) + private Long id; @Schema(description = "家长 ID", requiredMode = Schema.RequiredMode.REQUIRED) - private String parentId; + private Long parentId; @Schema(description = "学生 ID", requiredMode = Schema.RequiredMode.REQUIRED) - private String studentId; + private Long studentId; @Schema(description = "关系", example = "mother", allowableValues = {"father", "mother", "other"}) private String relationship; @@ -1633,7 +1626,7 @@ import java.time.LocalDateTime; /** * 基础实体类 * - *

包含所有实体共有的字段:ID(雪花算法)、审计字段、逻辑删除。

+ *

包含所有实体共有的字段:ID(数据库自增)、审计字段、逻辑删除。

*

所有实体类应继承此基类。

* * @author developer @@ -1647,10 +1640,10 @@ public abstract class BaseEntity implements Serializable { private static final long serialVersionUID = 1L; /** - * 主键 ID(雪花算法生成) + * 主键 ID(数据库自增) */ @Schema(description = "主键 ID") - @TableId(type = IdType.ASSIGN_ID) + @TableId(type = IdType.AUTO) private Long id; /** @@ -1865,7 +1858,7 @@ public class MybatisPlusConfig implements MetaObjectHandler { ```sql -- 角色表 CREATE TABLE t_auth_role ( - id BIGINT PRIMARY KEY COMMENT '主键 ID(雪花算法)', + id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID(数据库自增)', role_code VARCHAR(50) NOT NULL COMMENT '角色编码', role_name VARCHAR(100) NOT NULL COMMENT '角色名称', sort_order INT DEFAULT 0 COMMENT '排序', @@ -1880,7 +1873,7 @@ CREATE TABLE t_auth_role ( -- 菜单权限表 CREATE TABLE t_auth_menu ( - id BIGINT PRIMARY KEY COMMENT '主键 ID(雪花算法)', + id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID(数据库自增)', parent_id BIGINT DEFAULT 0 COMMENT '父菜单 ID', menu_type VARCHAR(20) NOT NULL COMMENT '菜单类型:menu-菜单,button-按钮', menu_name VARCHAR(100) NOT NULL COMMENT '菜单名称', @@ -1898,7 +1891,7 @@ CREATE TABLE t_auth_menu ( -- 用户角色关联表 CREATE TABLE t_user_role ( - id BIGINT PRIMARY KEY COMMENT '主键 ID(雪花算法)', + id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID(数据库自增)', user_id BIGINT NOT NULL COMMENT '用户 ID', role_id BIGINT NOT NULL COMMENT '角色 ID', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',