2023年11月26日发(作者:)

Mybatis-Plus:CRUD拓展系列(主键⽣成策略,⾃动填充,乐观

锁)

1.常⽤主键⽣成策略

Mybatis-Plus:常⽤的主键增长策略:1.默认_WORKER--基于雪花算法实现的⽤户唯⼀id⽣成策略;

--⾃动增长策略

@TableId 注解的使⽤:顾名思义,这个注解标注实体类中字段对应数据库中表的主键字段;当使⽤默认策略(雪花算法)特别注意⾃动⽣成

主键是Long型;当使⽤AUTO⾃动增长策略,要注意数据库设计中主键列也必需为⾃动增长

默认策略

// 默认全局唯⼀id 雪花算法⾃动⽣成(默认)

@TableId(type = _WORKER)

private Long id;

⾃动增长

// AUTO: ⾃动增长

@TableId(type = )

private Long id;

间)两个字段,这两个字段应该是添加修改

⾃动化

实体类字段中添加 @TableField 注解

// 字段在 插⼊时操作

@TableField(fill = )

private Date gmtCreate;

// 字段在 插⼊和更新时 操作

@TableField(fill = _UPDATE)

private Date gmtModified;

编写源数据处理器 实现 MetaObjectHandler 注意注⼊ioc容器中

package r;

import jectHandler;

import 4j;

import ject;

import ent;

import ;

/**

* 源数据处理器

*/

@Slf4j

@Component // 将处理器 加⼊ ioc容器中 Spring托管

public class MyMetaObjectHandler implements MetaObjectHandler {

// 插⼊数据时的策略

@Override

public void insertFill(MetaObject metaObject) {

前端展⽰

3.乐观锁处理

前⾔:乐观锁,对任何操作不加锁处理,直到出现问题再次更新测试,具体实现参照官⽹

进⼀步解释乐观锁处理过程:

1.先查询 获得当前版本号

2.执⾏更新时 要 带⼊version,只有当前更新记录的版本号 与 第⼀步查询的版本号⼀致时 才可以更新

3.如果 第⼀步version 与 第⼆步 version不⼀致 更新失败

4.执⾏更新 版本号 改变+1

实际操作:即实现线程安全;A线程 更新⼀条记录;在执⾏过程中 B线程率先完成更新记录(版本号改变);此时A线程第⼀步查询的版本号 与

当前要更新记录的版本号 已经不⼀致更新失败。

实体类 版本号字段增加 @version注解

// 乐观锁 处理 版本号

@Version

private Integer version;

编写配置类 注册乐观锁插件

package ;

import sticLockerInterceptor;

import Scan;

记录分页-1