乐观锁

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?条件还成立吗?


    }
}