乐观琐的作用不言而喻,大家都知道,直接进入主题
1.在springboot configuration类入OptimisticLockerInnerInterceptor
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
2.在实体类中对应的数据版本上加@Version
@Data
public class User extends Model<User> {
private Long id;
private String name;
private Integer age;
private String email;
private int deleted;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime createtime;
@Version
private long version;
}
3.准备测试方法:
@Test
public void testUpate(){
UpdateWrapper<User> updateWrapper=new UpdateWrapper<User>();
updateWrapper.eq("id",2) ;
User user=new User();
user.setName("zzzz");
user.setAge(100);
user.setVersion(1); //设定当前的数据版本
userMapper.update(user,updateWrapper);
}
4.运行log
2022-10-10 16:31:59.207 DEBUG 22380 --- [ main] c.m.service.mapper.UserMapper.update : ==> Preparing: UPDATE user SET name=?, age=?, createtime=?, version=? WHERE deleted=0 AND (id = ? AND version = ?)
2022-10-10 16:31:59.237 DEBUG 22380 --- [ main] c.m.service.mapper.UserMapper.update : ==> Parameters: zzzz(String), 100(Integer), 2022-10-10T16:31:56.760(LocalDateTime), 2(Long), 2(Integer), 1(Long)
2022-10-10 16:32:00.202 DEBUG 22380 --- [ main] c.m.service.mapper.UserMapper.update : <== Updates: 1