//乐观锁
// 解决 丢失更新
// 如果不考虑 事务隔离性  产生读的问题?
// 脏读  不可重复读  幻读
// 写的问题: 丢失更新问题 并发同时更新的时候会出现
// 解决方案 :  一般用乐观锁
// 乐观锁  通过数据库里一个字段 version 版本号 来控制并发出现的同时修改的问题 谁先修改 第二个人就不能再修改了
// 悲观锁  第一个人操作完后 第二个人才能再操作  悲观锁可以覆盖上一个人的数据
// 如果第二个人 也能操作 这样就会产生丢失更新问题
//在MyBatis-Plus 中使用 乐观锁
// 1. 在表中添加的一个字段
// 2. 在实体类中添加字段
 // 3. 在这个字段上添加一个注解
package com.jsonweb.json.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.util.Date;

/**
 * Author: Json
 * Date: 2021/10/17
 * 实体类
 **/
//lombok 注解
//不需要写 get set方法 有参无参构造 都会生成
@Data
public class User {
    @TableId(type= IdType.AUTO)
    private  Integer id;
    private  String name;
    private  Integer age;
    private  String email;

    @TableField(fill = FieldFill.INSERT)  //自动填充
    private Date creatTime;

    @TableField(fill = FieldFill.UPDATE)  //更新填充
    private Date updateTime;

    @Version
    private Integer version;  //版本号
}

//4. 配置乐观锁的插件

SpringBoot中mybatis-plus的乐观锁_乐观锁

官方配置访问

 乐观锁 | MyBatis-Plus

//5.测试乐观锁
@Test
public void updateSuoTest(){
   //根据id 做查询
   User user1 = userMapper.selectById(3);
   //进行修改
   user1.setAge(123);

   int i = userMapper.updateById(user1);
   System.out.println(i);
 //会发现 数据库中版本号字段已经更新
}