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:
parent
deb8431910
commit
37083d9b3b
@ -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 '创建时间',
|
||||
|
||||
Loading…
Reference in New Issue
Block a user