我使用了mybatisPlus的ASSIGN_ID生成雪花id,但时间回拨时总是报异常拒绝生成id,我不怕生成重复的id因为概率很小,如何让mybatisPlus继续生成雪花id插入,而不是拒绝生成id
时间: 2023-08-10 09:44:01 浏览: 177
MybatisPlus使用`ASSIGN_ID`生成雪花ID时,如果时间回拨会抛出异常拒绝生成ID,这是为了避免生成重复的ID。如果你不怕生成重复的ID,可以通过自定义ID生成器来绕过这个限制。
步骤如下:
1. 创建一个自定义的ID生成器,继承`DefaultIdentifierGenerator`类,重写`nextId`方法:
```java
public class MyIdentifierGenerator extends DefaultIdentifierGenerator {
@Override
public Serializable nextId(Object entity) {
try {
return super.nextId(entity);
} catch (IDGenerationException e) {
// 如果发生IDGenerationException异常,直接返回null,让MybatisPlus生成默认的ID
return null;
}
}
}
```
2. 在MybatisPlus的配置文件中配置自定义的ID生成器:
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加自定义的ID生成器
Properties properties = new Properties();
properties.setProperty("mybatis-plus.identifier-generator", "com.example.MyIdentifierGenerator");
interceptor.setProperties(properties);
return interceptor;
}
}
```
这样,当发生时间回拨时,MybatisPlus就会抛出`IDGenerationException`异常,但是我们在自定义的ID生成器中捕获了这个异常并返回了null,这样MybatisPlus就会继续生成默认的ID,避免了抛出异常拒绝生成ID的问题。
阅读全文