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


发布评论