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


