docs: 修改主键策略为数据库自增(不再使用雪花算法)

- 将实体类主键策略从 ASSIGN_ID(雪花算法)改为 AUTO(数据库自增)
- 更新 BaseEntity 基类:@TableId(type = IdType.AUTO)
- 更新所有表结构示例:id BIGINT PRIMARY KEY AUTO_INCREMENT
- 更新中间表示例:主键类型从 VARCHAR(32) 改为 BIGINT
- 统一使用 Long 类型作为 ID 字段类型

原因:
- 数据库自增简单可靠,便于调试和数据迁移
- 避免雪花算法在分布式环境下的时钟回拨问题
- 对于本项目规模,自增 ID 完全满足需求
- 与现有数据库表结构保持一致(如 course_collection 等表)
This commit is contained in:
En 2026-03-19 10:51:04 +08:00
parent deb8431910
commit 37083d9b3b

View File

@ -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;
/**
* 基础实体类
*
* <p>包含所有实体共有的字段ID雪花算法)、审计字段、逻辑删除。</p>
* <p>包含所有实体共有的字段ID数据库自增)、审计字段、逻辑删除。</p>
* <p>所有实体类应继承此基类。</p>
*
* @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 '创建时间',