MyBatis-Plus 允许开发者通过实现 IdentifierGenerator 接口来自定义ID生成器,以满足特定的需求。下面是一个简单的例子,展示如何自定义一个ID生成器:

1. 创建自定义ID生成器类:
   import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;

   public class CustomIdGenerator implements IdentifierGenerator {

       @Override
       public Number nextId(Object entity) {
           // 这里可以根据业务需求生成自定义的ID,例如使用雪花算法等
           // 这里简单起见,使用当前时间戳作为ID
           return System.currentTimeMillis();
       }
   }

2. 在实体类中使用自定义ID生成器:
   import com.baomidou.mybatisplus.annotation.IdType;
   import com.baomidou.mybatisplus.annotation.TableId;
   import com.baomidou.mybatisplus.annotation.TableLogic;
   import lombok.Data;

   @Data
   public class User {

       @TableId(type = IdType.ID_WORKER, value = "id", keyProperty = "id", keyColumn = "id", idGenerator = CustomIdGenerator.class)
       private Long id;

       private String name;

       // 其他字段...
   }

   在 @TableId 注解中,通过 idGenerator 属性指定使用自定义的ID生成器类。

3. 在 MyBatis-Plus 的配置文件中配置自定义ID生成器:
   <!-- 在 MyBatis-Plus 配置文件中配置自定义ID生成器 -->
   <bean class="com.example.CustomIdGenerator" id="customIdGenerator"/>

   或者使用 Java Config 的方式:
   @Configuration
   public class MyBatisPlusConfig {

       @Bean
       public CustomIdGenerator customIdGenerator() {
           return new CustomIdGenerator();
       }
   }

通过上述步骤,就可以自定义ID生成器,并在实体类中使用该生成器。根据具体的业务需求,可以在 nextId 方法中实现自己的ID生成逻辑。这样,MyBatis-Plus 就会在插入数据时使用你定义的ID生成器生成主键值。


转载请注明出处:http://www.zyzy.cn/article/detail/7057/MyBatis