我们平时使用主键时会为主键加上自增长策略,like this
AUTO INCREMENT
但有时自增长策略并不能满足我们的项目需求,那我们就需要加一些其他的生成策略。让我们列一下几种常用主键生成·策略,以及在项目中设置方法
NO1
自动增长:自动增长是我们见过的最基本的生成策略,它遵循的是从1开始依次加1的主键策略。
设置方法:

强调一下不要把Long写成long,会死的很惨,血泪教训。
@Data
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;

}
可以看到我们在主键上加上如图所示注解便可将策略设置为自增长。
这种需要在数据库上先设置自增长,否者就会报错说,ID主键为空

NO.2

UUID:

这种生成策略每次生成随机唯一的值,如下图所示

mybatisplus允许mysql自增 mybatisplus自增主键_spring


我们可以看到这种生成策略生成的值很长且为字符串格式,其还有一个明显缺点,那就是排序不方便,字符串形式所以很不方便排序

设置方法

@Data
public class User {
    @TableId(type = IdType.UUID)
    private String id;
    private String name;
    private Integer age;
    private String email;

}
这种需要String类型的主键,如果换成Long等类型就会报错,显示不匹配

NO.3

ID_WORKER

这是mp自带策略中一种,用于数字类型,mp就是mybatis plus,这第三中就是它自带的生成策略。它使用自己的生成算法生成一个19位数的主键值,如下图所示

mybatisplus允许mysql自增 mybatisplus自增主键_spring_02


设置方法

@Data
public class User {
@TableId(type =IdType.ID_WORKER )
    private Long id;
    private String name;
    private Integer age;
    private String email;

}
这种适用于数字类型主键如Long类型

NO.4

ID_WORKER_STR

这是mp自带策略中一另种,用于字符串类型,mp就是mybatis plus,这第三中就是它自带的生成策略。它使用自己的生成算法生成一个19位数的主键值,如下图所示

mybatisplus允许mysql自增 mybatisplus自增主键_主键_03


设置方法

@Data
public class User {
@TableId(type =IdType.ID_WORKER_STR )
    private String id;
    private String name;
    private Integer age;
    private String email;

}
这种用于字符串型主键如String

NO.5雪花生成策略
这种策略是默认生成策略,如果我们不设置type的值,默认就适用雪花算法。主键为Long类型或者String类型。