自定义ID生成器

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

自定义示例工程:

方法主键生成策略主键类型说明
nextIdASSIGN_ID,ID_WORKERID_WORKER_STRLong,Integer,String支持自动转换为String类型,但数值类型不支持自动转换,需精准匹配,例如返回Long,实体主键就不支持定义为Integer
nextUUIDASSIGN_UUID,UUIDString默认不含中划线的UUID生成

Spring-Boot

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

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

方式二:使用配置类

  1. @Bean
  2. public IdentifierGenerator idGenerator() {
  3. return new CustomIdGenerator();
  4. }

方式三:通过MybatisPlusPropertiesCustomizer自定义

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

Spring

方式一: XML配置

  1. <bean name="customIdGenerator" class="com.baomidou.samples.incrementer.CustomIdGenerator"/>
  2. <bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
  3. <property name="identifierGenerator" ref="customIdGenerator"/>
  4. </bean>

方式二:注解配置

  1. @Bean
  2. public GlobalConfig globalConfig() {
  3. GlobalConfig conf = new GlobalConfig();
  4. conf.setIdentifierGenerator(new CustomIdGenerator());
  5. return conf;
  6. }