在MyBatisPlus中,当你插入数据时,如果不希望自动使用雪花算法生成主键ID,你可以自定义主键策略。默认情况下,MyBatisPlus会为非Id类型的字段设置@TableId注解,并启用全局唯一ID生成器(如Snowflake)
时间: 2024-12-22 09:11:48 浏览: 15
多语言雪花算法里最好用的主键ID生成工具.zip
在MyBatisPlus中,如果你不想让框架自动使用雪花算法生成主键,有几种处理方式:
1. **手动赋值**: 就像前面提到的,可以直接在创建对象时,对`@TableId`标注的字段赋一个已知的值,如`Long`类型的基本类型值或`UUID`。
```java
User user = new User();
user.setId(1L); // 自定义的ID
user.setName("John");
save(user); // save方法用于插入数据
```
2. **关闭全局ID生成**:虽然默认开启,但你可以在全局配置文件(通常在`GlobalConfig`中)中禁用它,然后明确每个实体类的主键生成规则。
3. **自定义主键策略**:如果需要更复杂的策略,可以创建一个自定义的`BaseService`或`GlobalConfiguration`子类,覆盖默认的ID生成方法。
```java
// 配置文件中禁用全局ID生成
public class GlobalConfig extends BaseGlobalConfig {
@Override
protected void initDataSource() {
super.initDataSource();
idGen().setUseGeneratedKey(false);
}
}
```
在插入时,记得在实体类上显式声明主键策略,比如`@TableId(value = "id", type = IdType.AUTO)`。
阅读全文