mybatis plus 插入id
时间: 2025-01-23 20:08:44 浏览: 59
### MyBatis Plus 中插入数据时 ID 自动生成策略及用法
#### 自动增长 (Auto Increment)
当配置 `id-type` 为 `auto` 时,MyBatis Plus 将依赖于底层数据库的自动增量机制来生成主键。这意味着表结构中对应的字段需设定为自增属性[^3]。
对于 MySQL 数据库而言,在创建表的时候应指定列属性为 AUTO_INCREMENT:
```sql
CREATE TABLE example (
id BIGINT NOT NULL AUTO_INCREMENT,
name VARCHAR(255),
PRIMARY KEY (`id`)
);
```
#### 雪花算法 (Snowflake Algorithm)
采用 `assign_id` 或者 `id_worker` 可让 MyBatis Plus 使用雪花算法来自动生成全局唯一的 Long 类型 ID。这种方案适合分布式环境下的应用,因为它能确保不同节点产生的 ID 不会发生冲突。
如果希望得到的是字符串形式,则可以选择 `id_worker_str` 方式,这同样基于雪花算法但是返回的结果会被转换成 String 表达。
#### UUID
利用 `uuid` 和 `assign_uuid` 来使系统根据特定规则生产不含连字符(-) 的 Universally Unique Identifier(UUID)。前者适用于需要完全随机性的场景,后者则提供了更紧凑的形式。
以下是实体类定义的一个简单实例,展示了如何设置这些不同的 ID 生产方式:
```java
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class ExampleEntity {
@TableId(type = IdType.AUTO)
private Long id; // 对应 auto
public void setId(Long id){
this.id=id;
}
public Long getId(){
return this.id;
}
}
```
为了更改默认行为或针对某个具体模型定制化 ID 策略,可以在实体对象上通过注解的方式指明期望使用的类型,如下所示:
```java
@TableId(type=IdType.ASSIGN_ID)
private Long customIdField;
```
阅读全文
相关推荐


















