mybatis-plus 基于@Version注解的乐观锁实现

2022-05-11  本文已影响0人  一介书生独醉江湖
# 引入mybatis-plus依赖,注意这里的版本是3.4.2;(其他版本没有测)
# 3.2.0肯定是不支持的,无法引入MybatisPlusInterceptor;
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
# 创建配置类,添加乐观锁拦截器
package com.sawl.fxapi.config;

import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
/**
 * @Author ds
 * @Date 2022-05-10
 */
@Configuration
public class MyBatisPlusConfig {

    /**
     * 乐观锁插件
     * @return
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}
# 在实体类的字段上加上@Version注解
package com.sawl.fxapi.enotary.entity;

import com.baomidou.mybatisplus.annotation.Version;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;


/**
 * 测试表
 *
 * @author ds
 * @email 464226150@qq.com
 * @date 2022-05-07 10:37:57
 */
@Data
@TableName(value = "TB_NUMBER")
@ApiModel(value = "TbNumber", description = "测试表")
public class TbNumberEntity implements Serializable {
    private static final long serialVersionUID = 1L;
     /**
     * 版本记录
     */
    @Version
    @ApiModelProperty(value="版本", example="1", notes="版本")
    private Long recordVersion;
}

# 在新增时,我们需要为version字符赋默认值
# 在更新时,我们可以在更新之前将数据先查一次,再使用上述方式根据查询结果的对象实体更新
# 参考:
https://www.cnblogs.com/july-sunny/p/15769487.html
https://www.jb51.net/article/223881.htm
上一篇 下一篇

猜你喜欢

热点阅读