乐观锁

package com.xxx.domain;
@Data
@TableName("tbl_user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
@TableField(value = "pwd", select = false)
private String password;
private Integer age;
private String tel;
@TableField(exist = false)
private Integer online;
// 逻辑删除字段,标记当前记录是否被删除
@TableLogic(value = "0", delval = "1")
private Integer delted;
@Version
private Integer version;
}
package com.xxx.config;
@Configuration
public class MpConfig {
@Bean
public MybatisPlusInterceptor mpInterceptor() {
// 1.定义mp拦截器
MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
// 2.添加具体的拦截器
mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
// 3.添加乐观锁拦截器
mpInterceptor.addInnerInterceptor(new OptimistickLockerInnerInterceptor());
return mpInterceptor;
}
}
@SpringBootTest
class MybatisplusApplicationTests {
@Autowired
private UserDao userDao;
@Test
void testUpdate() {
//User user = new User();
//user.setId(3L);
//user.setName("Jock666");
//user.setVersion(1); // 需要提供version才能使用
//userDao.updateById(user);
// 1. 先通过要修改的数据Id将当前数据查询出来
//User user = userDao.selectById(3L);
// 2. 将要修改的属性逐一设置进去
//user.setName("Jock888");
//userDao.updateById(user);
// 1. 先通过要修改的数据Id将当前数据查询出来
User user = userDao.selectById(3L); //version=3
User user2 = userDao.selectById(3L); // version=3
user2.setName("Jock888");
userDao.updateById(user2); //version=4
user.setName("Jock888");
userDao.updateById(user); //version=3?条件还成立吗?
}
}
