mybatis-plus的乐观锁实现

1、创建实体类,实体类上加上版本号字段,同时加上@version注解

@Data
@Builder
@TableName(value = "tb_user")
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;
    private String userNo;
    private String nickname;
    private String email;
    private String phone;
    private Integer gender;
    private LocalDateTime birthday;
    private Integer isDelete;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
    @Version
    private  Integer version; // 版本号
}

2、数据库加上对应的版本号字段

ALTER TABLE tb_user ADD COLUMN version INT DEFAULT 0 NOT NULL;

3、mybatis-plus加上乐观锁配置信息

/**
 * mybatis-plus的配置
 * */
@Configuration
public class MPConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 配置乐观锁实现
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}

4、单测测试
先读再修改,当版本号不一致的时候会抛出异常,根据业务判断是否需要重试

 @Test
    public void testUserUpdate() {
        User user = userService.getById(1);
        user.setNickname("version1");
        boolean b = userService.updateById(user);
        if (b) {
            System.out.println("更新成功");
        }else {
            System.out.println("更新失败");
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容