当前位置 : 主页 > 编程语言 > java >

Mybatis-Plus使用雪花算法自动生成主键

来源:互联网 收集:自由互联 发布时间:2023-03-22
主键策略介绍 IdType.AUTO:数据库自增,需要数据库支持自增长特性。 IdType.NONE:未设置主键生成策略,需要开发者手动设置ID。 IdType.ASSIGN_ID:使用雪花算法生成主键,适用于分布式系统

主键策略介绍

  • IdType.AUTO:数据库自增,需要数据库支持自增长特性。

  • IdType.NONE:未设置主键生成策略,需要开发者手动设置ID。

  • IdType.ASSIGN_ID:使用雪花算法生成主键,适用于分布式系统,跨服务器部署。

  • IdType.ASSIGN_UUID:使用Java UUID生成主键。

  • IdType.ID_WORKER:已经被Mybatis-plus官方淘汰,推荐使用IdType.ASSIGN_ID代替。

  • IdType.ID_WORKER_STR:已经被Mybatis-plus官方淘汰,推荐使用IdType.ASSIGN_ID代替。

老版本配置

MyBatis-Plus支持在实体类属性上使用@TableId注解指定主键生成策略。当使用雪花算法生成唯一主键时,需要使用IdType.ID_WORKER属性值指定。在数据库中,字段类型可以选择CHAR(19)或者BIGINT。以下是生成主键的示例代码:

Copyimport com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; @Data public class User { // 指定使用雪花算法生成主键 @TableId(type = IdType.ID_WORKER) private Long id; private String name; private Integer age; }

新版本配置

在MyBatis-Plus 3.x版本及以上,IdType的枚举值支持了雪花算法的变体版本ID_WORKER_STR,它会根据字段类型自动选择CHAR(19)或VARCHAR(50)。实体类代码示例如下:

Copyimport com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; @Data public class User { // 指定使用雪花算法生成主键,并自动选择CHAR(19)或VARCHAR(50) @TableId(type = IdType.ASSIGN_ID) private String id; private String name; private Integer age; }

全局配置

Mybatis-plus提供了全局配置主键的方式,即在代码中进行全局统一的主键配置,避免每个实体类中都需要单独配置主键的繁琐操作。具体步骤如下:

在application.yml或application.properties中,设置全局的Mybatis-plus配置:

Copymybatis-plus: global-config: db-config: id-type: assign_id # 设置全局的主键生成策略为雪花算法

在实体类中,不需要再单独配置主键生成策略,可以直接使用注解@TableId指定主键属性,并通过value属性指定主键字段名称即可:

public class User { @TableId(value = "id") private Long id; private String name; private Integer age; private String email; }

测试代码

@Test void testInsertUser() { User user = new User(); user.setName("king"); user.setAge(19); int insert = userMapper.insert(user); System.out.println("insert = " + insert); }

测试结果: image.png

上一篇:Ubuntu 软件安装
下一篇:没有了
网友评论