本文代码样例均已上传至Gitee:https://gitee.com/tqbx/springboot-samples-learn/tree/master/spring-boot-mybatis-plus-primer
乐观锁适用于读多写少的场景。
乐观锁的实现机制:
- 取出记录时,获取当前version
- 更新时,带上这个version
- 执行更新时, set version = newVersion where version = oldVersion
- 如果version不对,就更新失败
使用方法:
- 在字段上加上@Version注解。
// 版本号
@Version
private Integer version;
- 配置乐观锁插件
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
- 测试,为更新的实体设置期望的版本号:
@Test
void update() {
//PDATE user SET name=?,update_time=?,version=? WHERE id=?
// AND version=? AND deleted=0
int version = 2;
User user = new User();
user.setId(1320037517763842049L);
user.setName("sm2");
user.setVersion(version);//期望的版本号
boolean b = userService.updateById(user);
System.out.println(b);
}
原文链接:/mybatis/994056.html