MyBatis-Plus 核心功能-自定義ID生成器

2022-03-24 17:15 更新

提示

自 3.3.0 開始,默認(rèn)使用雪花算法+?UUID?(不含中劃線)

自定義示例工程:

 方法  主鍵生成策略  主鍵類型  說(shuō)明
?nextId? ASSIGN_ID,
ID_WORKER,
ID_WORKER_STR
Long,
Integer,
String
支持自動(dòng)轉(zhuǎn)換為 String 類型,但數(shù)值類型不支持自動(dòng)轉(zhuǎn)換,需精準(zhǔn)匹配,例如返回 Long,實(shí)體主鍵就不支持定義為 Integer
?nextUUID? ASSIGN_UUID,UUID
String
默認(rèn)不含中劃線的 UUID 生成

Spring-Boot

方式一:聲明為 Bean 供 Spring 掃描注入

@Component
public class CustomIdGenerator implements IdentifierGenerator {
    @Override
    public Long nextId(Object entity) {
      	//可以將當(dāng)前傳入的class全類名來(lái)作為bizKey,或者提取參數(shù)來(lái)生成bizKey進(jìn)行分布式Id調(diào)用生成.
      	String bizKey = entity.getClass().getName();
        //根據(jù)bizKey調(diào)用分布式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());
}

Spring

方式一: XML 配置

<bean name="customIdGenerator" class="com.baomidou.samples.incrementer.CustomIdGenerator"/>

<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
		<property name="identifierGenerator" ref="customIdGenerator"/>
</bean>

方式二:注解配置

@Bean
public GlobalConfig globalConfig() {
	GlobalConfig conf = new GlobalConfig();
	conf.setIdentifierGenerator(new CustomIdGenerator());
	return conf;
}


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)