本规范基于项目现有代码实现,规定了数据库设计、表结构、字段命名、数据类型映射等相关规范。所有规范必须与现有代码保持一致,不得引入未实现的设想。
map-underscore-to-camel-case 配置,实现数据库下划线字段与 Java 驼峰属性自动映射。t_ 开头,后跟模块名和实体名,使用下划线分隔单词。t_user_info、t_user_token。user_id、create_time、wx_openid。id 作为主键字段,类型为 BIGINT。ASSIGN_ID 策略(雪花算法生成 ID)。@TableId(value = "id", type = IdType.ASSIGN_ID) 注解。BaseEntity,包含以下公共字段:
id:主键,BIGINT。version:乐观锁版本号,INT,默认值为 0。create_user:创建者 ID,BIGINT。create_time:创建时间,DATETIME。update_user:更新者 ID,BIGINT。update_time:更新时间,DATETIME。@TableField 注解指定字段名和填充策略。注:在代码中 BaseEntity 的字段命名与注解如下(与上面对应):
@TableId(value = "id", type = IdType.ASSIGN_ID) 标记 id 字段,并使用雪花算法生成ID;返回给前端时对 Long 类型使用 ToStringSerializer 序列化。@TableField(value = "version") @Version 用于乐观锁。@TableField(value = "create_user", fill = FieldFill.INSERT) 表示插入时自动填充 createUser。@TableField(value = "create_time", fill = FieldFill.INSERT) 对应 createTime 字段,类型为 LocalDateTime。@TableField(value = "update_user", fill = FieldFill.INSERT) 与 updateUser,插入时默认填充;更新时 update_time 标注为 FieldFill.INSERT_UPDATE。CustomMetaObjectHandler 实现自动填充。create_time、update_time、create_user、update_user。update_time、update_user。实现说明:CustomMetaObjectHandler 在 insertFill/updateFill 方法中使用 strictInsertFill / strictUpdateFill 来填充时间和用户字段;当 createUser / updateUser 为空时,默认写入常量 currentUserInfoId = 1L。
version 字段实现乐观锁。@Version 注解。OptimisticLockerInnerInterceptor 插件。实现说明:MybatisPlusConfig 注册了 OptimisticLockerInnerInterceptor 到 MybatisPlusInterceptor 中以启用乐观锁支持。
@EnumValue 注解标记存储值。TypeHandler 处理枚举与数据库的映射。INT 类型,使用 code 值存储。Gender 枚举存储为 1(男)、2(女)。VARCHAR。INT 或 BIGINT。DATETIME,使用 LocalDateTime。TINYINT 或 BIT。BaseMapper<T>。@Mapper 注解标记。示例:
@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {
}
V{version}__{description}.sql。