1.項目中需要引入mybatisplus核心組件
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mp.version}</version></dependency>
2.新建一個類實現IdentifierGenerator,重寫id生成策略
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;import java.util.UUID;public class CustomUUIDGenerator implements IdentifierGenerator {@Overridepublic boolean assignId(Object idValue) {return IdentifierGenerator.super.assignId(idValue);}//重寫雪花id算法@Overridepublic Number nextId(Object entity) {return SequenceUtil.makeId();}//重寫uuid算法,不過濾-@Overridepublic String nextUUID(Object entity) {return UUID.randomUUID().toString();}
}
3.在mybatisplus配置文件中注入bean
@Configuration
public class MybatisPlusConfig {@Beanpublic IdentifierGenerator identifierGenerator() {return new CustomUUIDGenerator();}}
4.在實體bean映射類中使用需要在ID字段上加入注解
ASSIGN_UUID即為重寫后生成的UUID,原生成的uuid為32位,沒有-連接符,id需要使用String類型
@TableId(value = "id", type = IdType.ASSIGN_UUID)
ASSIGN_ID即為重寫后生成的雪花id,值為Long類型
@TableId(value = "workspaceid", type = IdType.ASSIGN_ID)
此方法為重寫覆蓋原生mybatisplus,所以不影響其他地方,id依然會在insert時自動生成.