mybatis-plus乐观锁


乐观锁就是解决更新丢失的情况,乐观锁的主要思想就是双方同时更新并且提交事务的时候,比如张三提交事务后,然后李四再提交事务,李四提交的最终数据会覆盖张三提交的数据。

  1. 解决以上问题的办法就是加乐观锁和死锁:这里只提点乐观锁后续提点死锁
    1. 乐观锁的实现原理就是张三提交事务后然李四提交事务失败:实现流程是先设置一个version版本号,每次提交事务时会检查版本号是否与数据库的版本号一致,一致可以提交不一致则不能提交。
    在这里插入图片描述
    在数据库中添加version字段 之所以这样做呢是用mybatis-plus来进行乐观锁的时候需要这个字段去标记
    在这里插入图片描述
    切记要把version字段先设置初始值为1,不然会报错
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User5 {
   
    @TableId(type = IdType.ID_WORKER)//数字类型的id使用,当类型为Long时默认使用,生成19位的Id值,
    private String id;
    private String name;
    private Integer age;
    private String email;
    @TableField(fill = FieldFill.INSERT) //进行添加操作时有值
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE) //进行添加和修改操作时有值
    private Date updateTime;
    //添加version属性,注意添加@Version注解
    //同时使用TableField设置初始值为1
    @TableField(fill = FieldFill.INSERT)
     @Version //不加version乐观锁就会不起作用,他更新时数据库的version不会加1,两个人拿到一个版本号也会执行更新后面提交的数据会覆盖前面提交的数据
    private Integer version;
    //添加删除标记
    @TableLogic
    @TableField(fill = FieldFill.INSERT)//设置初始值
    private Integer deleted;

    public User5(String name, Integer age, String email) {
   
        this.name = name;
        this.age = age;
        this.email = email;
    }
}

切记需要配置乐观锁的插件

package cn.com.zzn.config;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值