//乐观锁
// 解决 丢失更新
// 如果不考虑 事务隔离性 产生读的问题?
// 脏读 不可重复读 幻读
// 写的问题: 丢失更新问题 并发同时更新的时候会出现
// 解决方案 : 一般用乐观锁
// 乐观锁 通过数据库里一个字段 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. 配置乐观锁的插件
官方配置访问
?乐观锁 | 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);
//会发现 数据库中版本号字段已经更新
}
|