主键生成策略

郭胜凯2026/08/17

在使用 Smart Mybatis 进行开发时, 我们可以通过配置主键生成策略来控制实体类主键的生成方式。Smart Mybatis 支持多种主键生成策略, 包括自动增长、UUID 以及自定义生成器。

配置主键生成策略

要配置主键生成策略, 可以在实体类的主键字段上使用 @ID 注解, 并指定所需的生成策略。例如:

public class Example extends PO {
    @ID(generateType = PrimaryGenerateType.AUTO)
    private Long id;

    // ...
}

在上述示例中, generateType 属性用于指定主键的生成策略。Smart Mybatis 支持以下几种主键生成策略:

生成策略描述
AUTO(默认)数据库生成 identity/自增值,插入后回填实体
UUID使用 UUID 作为主键
SNOWFLAKE使用雪花算法生成分布式唯一 ID
SNOWFLAKE_HEX使用雪花算法生成的十六进制字符串作为主键
INPUT手动输入主键, 不进行自动生成

UUIDSNOWFLAKESNOWFLAKE_HEX 在 3.0.2 中要求主键字段类型为 StringAUTO 的实际 DDL 和回填方式由数据库方言决定。

3.0.2

当前 INPUT 分支存在 switch fall-through,传入值可能继续被 UUID 覆盖。在修复版本发布前,不要依赖该策略;手动主键请使用明确的自定义 Mapper SQL,并添加数据库集成测试。详见版本说明

批量插入的 AUTO 主键也会回填到集合中的对象。Oracle 的批量 identity 由框架内部复用基础 insert 适配,业务仍调用 insertBatch(records)

Last Updated 11/23/2025, 9:16:20 PM