主键生成策略
郭胜凯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 | 手动输入主键, 不进行自动生成 |
UUID、SNOWFLAKE、SNOWFLAKE_HEX 在 3.0.2 中要求主键字段类型为 String。AUTO 的实际 DDL 和回填方式由数据库方言决定。
3.0.2
当前 INPUT 分支存在 switch fall-through,传入值可能继续被 UUID 覆盖。在修复版本发布前,不要依赖该策略;手动主键请使用明确的自定义 Mapper SQL,并添加数据库集成测试。详见版本说明。
批量插入的 AUTO 主键也会回填到集合中的对象。Oracle 的批量 identity 由框架内部复用基础 insert 适配,业务仍调用 insertBatch(records)。
