使用雪花算法生成主键ID

使用MybatisPlus-定义数据id为雪花生成的唯一ID值

@Getter
@Setter
@TableName("b_project")
public class FinProjectAuthEntity extends Model<FinProjectAuthEntity> {

/**
* 主键ID
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
}
其他策略
@TableId(value = "id", type = IdType.AUTO)

详解

type属性:设置主键生成策略,不指定的话默认雪花算法 (数据库记得勾选自动递增)
1:AUTO(0)—使用数据库的自增策略,注意,该类型请确保数据库设置了id自增,否则无效
2:NONE(1)—不设置id生成策略
3:INPUT(2)—需要自己数据添加主键,不能为null,否则报错
4:ASSIGN_ID(3)—默认就是这个,基于雪花算法的策略生成数据id,与数据库id是否设置自增无关(如果我们自己指定了ID,便不会触发雪花算法),可兼容数值型与字符串型
5:ASSIGN_UUID(4)—以UUID生成算法作为id生成策略
————————————————
版权声明:本文为CSDN博主「小徐敲java」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_19891197/article/details/129162472

 

在这段代码中,@TableId 注解用于标记一个字段,表示这个字段是数据库表的主键字段。注解的参数包括:

  • value = "id":这是主键字段的名称,通常对应数据库表的主键列名为 "id"。
  • type = IdType.ASSIGN_ID:这是主键的生成策略,它告诉ORM框架如何生成主键值。IdType.ASSIGN_ID 可能表示使用一个分配的唯一标识符来生成主键值,这通常由数据库或框架自动生成。不同的ORM框架支持不同的主键生成策略。

    雪花算法:
  • 雪花算法(雪花)是微博开源的分布式ID生成算法其核心思想就是:使用一个64位的长型的数字作为全局唯一ID。在分布式系统中的应用十分广泛,且ID引入了时间戳,基本上保持自增的。

    pom依赖
  • <properties>
    <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
    <main-class>com.ccxgf.WebApplication</main-class>
    <mybatis-plus-boot.version>3.5.2</mybatis-plus-boot.version>
    <mybatis-plus-generator.version>3.5.2</mybatis-plus-generator.version>
    <mybatis-plus-join.version>1.3.6</mybatis-plus-join.version>
    <mybatis-plus-dynamic-datasource.version>3.5.2</mybatis-plus-dynamic-datasource.version>
    <fastjson.version>1.2.83</fastjson.version>
    <lombok.version>1.18.8</lombok.version>
    </properties>
  • <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.3.12.RELEASE</version>
    </parent>
  • <!-- mybatis-plus -->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>${mybatis-plus-boot.version}</version>
    </dependency>
    <!-- mybatis-plus join -->
    <dependency>
    <groupId>com.github.yulichang</groupId>
    <artifactId>mybatis-plus-join</artifactId>
    <version>${mybatis-plus-join.version}</version>
    </dependency>
    <!-- mybatis-plus generator -->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>${mybatis-plus-generator.version}</version>
    </dependency>
    <!-- mybatis-plus dynamic-datasource -->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>${mybatis-plus-dynamic-datasource.version}</version>
    </dependency>
    <!-- fastjson -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>${fastjson.version}</version>
    </dependency>
    <!-- lombok -->
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${lombok.version}</version>
    <scope>provided</scope>
    </dependency>
posted @ 2023-10-27 10:20  Tk小武  阅读(659)  评论(0)    收藏  举报