本文代码样例均已上传至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
private Integer version;
- 支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
- 整数类型下
newVersion = oldVersion + 1
-
newVersion 会回写到 entity 中
- 仅支持
updateById(id) 与 update(entity,wrapper) 方法
- 在
update(entity,wrapper) 方法下,wrapper 不能复用!!!
@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);
}
(编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|