在 MyBatis Plus 中,@TableId
注解的 type
属性有以下取值及含义:
-
IdType.AUTO
:- 含义:数据库自增策略,由数据库自动生成主键值。适用于数据库支持自增主键的情况,例如 MySQL 中的自增整数类型主键。
- 示例:
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; public class User { @TableId(type = IdType.AUTO) private Long id; // 其他字段... }
-
IdType.INPUT
:- 含义:用户输入 ID 值策略,由用户在代码中手动设置主键值,然后插入到数据库中。这种方式适用于需要自定义主键值或者使用分布式唯一 ID 生成器的场景。
- 示例:
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; public class User { @TableId(type = IdType.INPUT) private Long customId; // 其他字段... }
-
IdType.ID_WORKER
:- 含义:使用 MyBatis Plus 内置的分布式唯一 ID 生成器(如
IdWorker
)生成主键值。适用于分布式系统中需要全局唯一主键的情况。 - 示例:
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; public class User { @TableId(type = IdType.ID_WORKER) private Long id; // 其他字段... }
- 含义:使用 MyBatis Plus 内置的分布式唯一 ID 生成器(如
-
IdType.UUID
:- 含义:使用 Java 的
UUID
(Universally Unique Identifier)生成主键值。生成的主键是一个随机的、全球唯一的字符串。适用于不依赖数据库自增功能且需要全局唯一主键的场景。 - 示例:
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; public class User { @TableId(type = IdType.UUID) private String uuidId; // 其他字段... }
- 含义:使用 Java 的
-
IdType.NONE
:- 含义:未设置特定的主键生成策略,需要手动在代码中处理主键值的生成和赋值。通常在一些特殊情况下使用,例如需要使用数据库的存储过程生成主键值或者从外部系统获取主键值。
- 示例:
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.IdType; public class User { @TableId(type = IdType.NONE) private Long customGeneratedId; // 其他字段... }