【mybatis】mybatis-plus中主键生成策略

1、简介

  • MyBatis-Plus 中的主键生成策略是一个关键特性,它决定了如何为新插入的行生成唯一标识符(即主键)。
  • MyBatis-Plus 提供了多种主键生成策略,以满足不同场景下的需求。

2、常见主键生成策略

1. AUTO(数据库ID自增)

  • 描述:这是最常用的主键生成策略之一,特别适用于像 MySQL 这样支持主键自动递增的数据库。当使用 AUTO 策略时,MyBatis-Plus 会依赖数据库的自增机制来生成主键。
  • 使用场景:适用于单表操作,且数据库支持主键自增的场景。
  • 配置方式:在实体类的主键字段上使用 @TableId(type = IdType.AUTO) 注解来指定。

2. INPUT(用户输入)

  • 描述:该策略假定主键值由用户(或开发者)在插入数据前手动设置。如果主键是自定义的,或者需要从外部系统获取,那么 INPUT 策略是一个很好的选择。
  • 使用场景:适用于需要手动设置主键的场景,比如当主键是业务相关或者需要从外部系统获取时。
  • 配置方式:在实体类的主键字段上使用 @TableId(type = IdType.INPUT) 注解来指定。

3. ASSIGN_ID(雪花算法)

  • 描述:雪花算法(SnowFlake)是 Twitter 开源的分布式 ID 生成算法,它能够生成一个 64 位的唯一 ID。该算法在分布式系统中应用广泛,因为它能够在不依赖数据库的情况下生成全局唯一的 ID,并且 ID 呈递增趋势。
  • 使用场景:适用于分布式系统,且需要全局唯一递增 ID 的场景。
  • 配置方式:在实体类的主键字段上使用 @TableId(type = IdType.ASSIGN_ID) 注解来指定。如果不指定 type,MyBatis-Plus 默认也会使用 ASSIGN_ID 策略(自 3.3.0 版本起)。

4. ASSIGN_UUID(不含中划线的UUID)

  • 描述:该策略使用 UUID(Universally Unique Identifier)作为主键,但与标准的 UUID 不同的是,它生成的是不含中划线的 UUID 字符串。UUID 是一种由 32 个十六进制数字组成的字符串,理论上能够保证全局唯一。
  • 使用场景:适用于需要全局唯一主键,但不关心主键递增性的场景。
  • 配置方式:在实体类的主键字段上使用 @TableId(type = IdType.ASSIGN_UUID) 注解来指定。

5. NONE(无状态)

  • 描述:NONE 策略表示不使用任何主键生成策略,需要开发者手动设置主键值。这实际上是一种特殊的 INPUT 策略,但它没有显式地指出主键是由用户输入的。
  • 使用场景:在特殊情况下,当开发者想要完全控制主键的生成过程时,可以使用 NONE 策略。
  • 配置方式:在实体类的主键字段上使用 @TableId(type = IdType.NONE) 注解来指定。但请注意,如果不设置 type 属性,且全局配置中也未指定主键生成策略,那么 MyBatis-Plus 可能会默认使用 AUTO 或其他策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值