mybaties plus手动插入雪花id(手动设置主键)

本文介绍在XML文件中手动设置主键值的方法。通过使用mybatiesplus提供的IdWorker工具类来生成雪花ID,并将其设置为记录的主键。

适用场景:自己在xml写保存方法时!需要手动设置主键值。

//手动插入雪花id
 demo.setId(IdWorker.getIdStr());

IdWorker是mybaties plus为我们提供的生成雪花id的工具类。

官方对该类的描述(该描述很简单,暂时只找到了这个,还有其他描述欢迎补充)

### 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; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值