Compare commits

..

No commits in common. "134cc6a0758d00546e4f3275ce8fa3bee1775b32" and "2eb4a28b89eaf6a3b7ea78246ddddec616922434" have entirely different histories.

View File

@ -1298,7 +1298,7 @@ CREATE TABLE t_user_role (
-- ✅ 推荐:不使用外键约束 -- ✅ 推荐:不使用外键约束
CREATE TABLE t_user_role ( CREATE TABLE t_user_role (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID数据库自增', id BIGINT PRIMARY KEY COMMENT '主键 ID雪花算法',
user_id BIGINT NOT NULL COMMENT '用户 ID', user_id BIGINT NOT NULL COMMENT '用户 ID',
role_id BIGINT NOT NULL COMMENT '角色 ID', role_id BIGINT NOT NULL COMMENT '角色 ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
@ -1452,14 +1452,14 @@ t_{实体 A}_{实体 B}
public class ClassTeacher { public class ClassTeacher {
@Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY)
@TableId(type = IdType.AUTO) @TableId(type = IdType.ASSIGN_ID)
private Long id; private String id;
@Schema(description = "班级 ID", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "班级 ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long classId; private String classId;
@Schema(description = "教师 ID", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "教师 ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long teacherId; private String teacherId;
// === 业务属性字段 === // === 业务属性字段 ===
@Schema(description = "角色", example = "teacher", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "角色", example = "teacher", requiredMode = Schema.RequiredMode.REQUIRED)
@ -1490,9 +1490,16 @@ public class ParentStudentMapping { } // 冗余
#### 5. 主键策略 #### 5. 主键策略
```java ```java
// 推荐:使用 AUTO_INCREMENT数据库自增- 适用于所有表 // 推荐:使用 ASSIGN_ID雪花算法- 适用于有业务属性的中间表
@TableId(type = IdType.AUTO) @TableId(type = IdType.ASSIGN_ID)
private Long id; private String id;
// 或:使用复合主键(适用于纯关联表,无业务属性)
@TableId
private String parentId;
@TableId
private String studentId;
``` ```
#### 6. 唯一索引约束 #### 6. 唯一索引约束
@ -1541,9 +1548,9 @@ CREATE UNIQUE INDEX uk_class_teacher ON t_class_teacher(class_id, teacher_id);
**表结构:** **表结构:**
```sql ```sql
CREATE TABLE t_parent_student ( CREATE TABLE t_parent_student (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID数据库自增', id VARCHAR(32) PRIMARY KEY COMMENT '主键 ID雪花算法',
parent_id BIGINT NOT NULL COMMENT '家长 ID', parent_id VARCHAR(32) NOT NULL COMMENT '家长 ID',
student_id BIGINT NOT NULL COMMENT '学生 ID', student_id VARCHAR(32) NOT NULL COMMENT '学生 ID',
relationship VARCHAR(20) COMMENT '关系father/mother/other', relationship VARCHAR(20) COMMENT '关系father/mother/other',
is_primary TINYINT DEFAULT 1 COMMENT '是否主要联系人', is_primary TINYINT DEFAULT 1 COMMENT '是否主要联系人',
created_by VARCHAR(50) COMMENT '创建人', created_by VARCHAR(50) COMMENT '创建人',
@ -1578,14 +1585,14 @@ import java.time.LocalDateTime;
public class ParentStudent { public class ParentStudent {
@Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY)
@TableId(type = IdType.AUTO) @TableId(type = IdType.ASSIGN_ID)
private Long id; private String id;
@Schema(description = "家长 ID", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "家长 ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long parentId; private String parentId;
@Schema(description = "学生 ID", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "学生 ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long studentId; private String studentId;
@Schema(description = "关系", example = "mother", allowableValues = {"father", "mother", "other"}) @Schema(description = "关系", example = "mother", allowableValues = {"father", "mother", "other"})
private String relationship; private String relationship;
@ -1626,7 +1633,7 @@ import java.time.LocalDateTime;
/** /**
* 基础实体类 * 基础实体类
* *
* <p>包含所有实体共有的字段ID数据库自增)、审计字段、逻辑删除。</p> * <p>包含所有实体共有的字段ID雪花算法)、审计字段、逻辑删除。</p>
* <p>所有实体类应继承此基类。</p> * <p>所有实体类应继承此基类。</p>
* *
* @author developer * @author developer
@ -1640,10 +1647,10 @@ public abstract class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键 ID数据库自增 * 主键 ID雪花算法生成
*/ */
@Schema(description = "主键 ID") @Schema(description = "主键 ID")
@TableId(type = IdType.AUTO) @TableId(type = IdType.ASSIGN_ID)
private Long id; private Long id;
/** /**
@ -1858,7 +1865,7 @@ public class MybatisPlusConfig implements MetaObjectHandler {
```sql ```sql
-- 角色表 -- 角色表
CREATE TABLE t_auth_role ( CREATE TABLE t_auth_role (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID数据库自增', id BIGINT PRIMARY KEY COMMENT '主键 ID雪花算法',
role_code VARCHAR(50) NOT NULL COMMENT '角色编码', role_code VARCHAR(50) NOT NULL COMMENT '角色编码',
role_name VARCHAR(100) NOT NULL COMMENT '角色名称', role_name VARCHAR(100) NOT NULL COMMENT '角色名称',
sort_order INT DEFAULT 0 COMMENT '排序', sort_order INT DEFAULT 0 COMMENT '排序',
@ -1873,7 +1880,7 @@ CREATE TABLE t_auth_role (
-- 菜单权限表 -- 菜单权限表
CREATE TABLE t_auth_menu ( CREATE TABLE t_auth_menu (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID数据库自增', id BIGINT PRIMARY KEY COMMENT '主键 ID雪花算法',
parent_id BIGINT DEFAULT 0 COMMENT '父菜单 ID', parent_id BIGINT DEFAULT 0 COMMENT '父菜单 ID',
menu_type VARCHAR(20) NOT NULL COMMENT '菜单类型menu-菜单button-按钮', menu_type VARCHAR(20) NOT NULL COMMENT '菜单类型menu-菜单button-按钮',
menu_name VARCHAR(100) NOT NULL COMMENT '菜单名称', menu_name VARCHAR(100) NOT NULL COMMENT '菜单名称',
@ -1891,7 +1898,7 @@ CREATE TABLE t_auth_menu (
-- 用户角色关联表 -- 用户角色关联表
CREATE TABLE t_user_role ( CREATE TABLE t_user_role (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键 ID数据库自增', id BIGINT PRIMARY KEY COMMENT '主键 ID雪花算法',
user_id BIGINT NOT NULL COMMENT '用户 ID', user_id BIGINT NOT NULL COMMENT '用户 ID',
role_id BIGINT NOT NULL COMMENT '角色 ID', role_id BIGINT NOT NULL COMMENT '角色 ID',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',