自动生成主键

@UUID:为String类型的属性声明自动生成UUID,属性如下:

属性

说明

length

定义生成的UUID的长度,默认长度为32

举例:

@UUID(length=30)

private String planId;

 

 

在使用 MyBatis-Plus 时,配置自动生成主键主要依赖于其提供的主键生成策略。MyBatis-Plus 支持多种主键生成方式,包括数据库自增、雪花算法(Snowflake)、以及基于时间戳的生成策略等。以下介绍几种常见的配置方式: ### 1. 使用数据库自增主键 如果使用的数据库支持自增主键(如 MySQL),可以在实体类的主键字段上使用 `@TableId` 注解,并将主键类型设置为 `AUTO`,这样 MyBatis-Plus 会自动识别数据库的自增策略。 ```java import com.baomidou.mybatisplus.annotation.*; public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; // Getter and Setter } ``` 在这种配置下,无需额外配置,数据库会自动处理主键生成 [^2]。 --- ### 2. 使用雪花算法生成主键(`assign_id`) MyBatis-Plus 提供了基于雪花算法的主键生成策略,可以通过全局配置或注解方式进行设置。全局配置可在 `application.yml` 或 `application.properties` 文件中进行。 在 `application.yml` 中配置如下: ```yaml mybatis-plus: global-config: db-config: id-type: assign_id ``` 如果只想对某个特定字段生效,可以在实体类中使用 `@TableId` 注解指定: ```java import com.baomidou.mybatisplus.annotation.*; public class User { @TableId(type = IdType.ASSIGN_ID) private Long id; private String name; private Integer age; // Getter and Setter } ``` 该策略生成的主键为 64 位的 Long 类型,结合时间戳和机器 ID,适合分布式系统场景 [^2]。 --- ### 3. 使用 UUID 作为主键 对于字符串类型的主键,可以使用 UUID 策略生成。该方式适用于不依赖数据库自增字段的场景。 ```java import com.baomidou.mybatisplus.annotation.*; public class User { @TableId(type = IdType.ASSIGN_UUID) private String id; private String name; private Integer age; // Getter and Setter } ``` 需要注意的是,UUID 生成的是字符串类型,适用于主键为 `VARCHAR` 类型的数据库字段。 --- ### 4. 自定义主键生成策略 如果默认的主键生成策略无法满足业务需求,还可以通过实现 `IdentifierGenerator` 接口来自定义主键生成逻辑。例如: ```java import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; public class CustomIdGenerator implements IdentifierGenerator { @Override public Number nextId(Object parameter) { // 自定义主键生成逻辑 return System.currentTimeMillis(); } } ``` 然后在配置文件中指定自定义生成器: ```yaml mybatis-plus: global-config: db-config: id-type: none ``` 并在实体类中使用: ```java @TableId(value = "id", type = IdType.NONE) private Long id; ``` 这种方式提供了更高的灵活性,适用于特定业务场景 [^2]。 --- ### 总结 MyBatis-Plus 提供了多种主键生成策略,开发者可以根据项目需求选择合适的策略。常见的包括数据库自增、雪花算法、UUID 以及自定义生成器。通过 `@TableId` 注解或全局配置即可轻松实现主键自动生成。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值