Skip to content

切换为数据库自增 ID

最后更新: 13 天前
实践版本: v4.0.0

ContiNew Admin 在 v2.4.0 版本前仅支持 MySQL 数据库,从该版本开始启动了多数据库适配计划(目前已额外支持 PostgreSQL)。为确保跨数据库兼容性,框架默认采用分布式 ID 生成方案 CosId 作为主键生成策略。

如果您的项目:

  1. 仅使用 MySQL 数据库
  2. 业务场景简单,不需要分布式 ID 的特性
  3. 希望保持数据库原生自增 ID 的简洁性

那么可以按照本文档所述步骤,将 ID 生成策略切换为 MySQL 原生自增 ID。

步骤 1:调整 ID 生成策略

修改 application.yml 配置文件中的 MyBatis Plus 配置,调整全局 ID 生成策略,移除 ID 生成器配置项。

continew-server/application.yml
yaml
--- ### MyBatis Plus 配置
mybatis-plus:
  ## 全局配置
  global-config:
    db-config:
      # auto 代表使用数据库自增策略(需要在表中设置好自增约束)
      id-type: AUTO
  ## 扩展配置
  extension:
    enabled: true
    # ID 生成器配置
    #id-generator:
    #  type: COSID

步骤 2:移除 CosId 组件

由于切换为数据库自增 ID 后不再需要分布式 ID 生成器,因此需要移除 CosId 相关配置和依赖。

2.1 移除配置

删除 application.yml 配置文件中与 CosId 相关的所有配置项。

continew-server/application.yml
yaml
--- ### CosId 配置
#cosid:
  #...

2.2 移除依赖

删除 continew-common/pom.xml 文件中的 CosId 依赖:

continew-common/pom.xml
xml
<!-- CosId(通用、灵活、高性能的分布式 ID 生成器) -->
<dependency>
    <groupId>me.ahoo.cosid</groupId>
    <artifactId>cosid-spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>me.ahoo.cosid</groupId>
    <artifactId>cosid-spring-redis</artifactId>
</dependency>

步骤三:调整 Liquibase SQL 脚本

框架默认提供的 MySQL 建表脚本(位于 continew-server/.../resources/db/changelog/mysql 目录下)中已保留了 AUTO_INCREMENT 约束配置,因此在切换为自增 ID 策略时,通常不需要对建表脚本进行额外修改。

3.1 确认自增配置

建议检查脚本中的表定义,确保主键列已正确配置 AUTO_INCREMENT 约束,例如:

sql
CREATE TABLE `sys_user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
  -- 其他字段...
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

3.2 清理示例数据(可选)

项目中包含部分示例数据,建议删除或调整这些数据,确保它们符合自增 ID 的生成规则。

完成验证

完成上述配置后,启动项目并进行如下验证:

  1. 新增数据时,检查数据库表是否正确生成自增 ID
  2. 确认系统功能正常,没有出现 ID 生成相关的错误
  3. 监控日志,确保没有与 CosId 相关的错误或警告信息