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、創建時間,修改時間設置,數據庫級別和代碼級別(不建議數據庫級別)設計思路:繼承類,重寫方法

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM