mybatis-plus生成主键策略教程

Mybatis Plus 为我们提供了三种设置 主键生成策略的方式。它们的优先级顺序是:局部注解 > 全局 > 默认(雪花算法)。下面我们来一一介绍

局部和全局设置举例

 

 全局设置

 

自3.3.0开始,默认使用雪花算法+UUID(不含中划线)

自定义ID生成器

Spring-Boot

方式一:声明为Bean供Spring扫描注入

@Component
public class CustomIdGenerator implements IdentifierGenerator {
    @Override
    public Long nextId(Object entity) {
          //可以将当前传入的class全类名来作为bizKey,或者提取参数来生成bizKey进行分布式Id调用生成.
          String bizKey = entity.getClass().getName();
        //根据bizKey调用分布式ID生成
        long id = ....;
          //返回生成的id值即可.
        return id;
    }
}

 

方式二:使用配置类

@Bean
public IdentifierGenerator idGenerator() {
    return new CustomIdGenerator();
}

 

方式三:通过MybatisPlusPropertiesCustomizer自定义

@Bean
public MybatisPlusPropertiesCustomizer plusPropertiesCustomizer() {
    return plusProperties -> plusProperties.getGlobalConfig().setIdentifierGenerator(new CustomIdGenerator());
}

 

@TableId(type = IdType.ASSIGN_ID)

描述
AUTO 数据库ID自增
NONE 无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
INPUT insert前自行set主键值
ASSIGN_ID 分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)
ASSIGN_UUID 分配UUID,主键类型为String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认default方法)
ID_WORKER 分布式全局唯一ID 长整型类型(please use ASSIGN_ID)
UUID 32位UUID字符串(please use ASSIGN_UUID)
ID_WORKER_STR 分布式全局唯一ID 字符串类型(please use ASSIGN_ID)

 

特别说明:

1、如果设置类型是AUTO自增策略,数据库字段一定设置自增

2、创建时间,修改时间设置,数据库级别和代码级别(不建议数据库级别)设计思路:继承类,重写方法

 

 

 

 

 

 

posted @ 2021-01-05 15:01  刘百会  阅读(2814)  评论(0编辑  收藏  举报