举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > mybatis 乐观锁 MyBatis-Plus 插件-乐观锁插件

mybatis 乐观锁 MyBatis-Plus 插件-乐观锁插件

2023-05-02 11:31 MyBatis-Plus教程

mybatis 乐观锁 MyBatis-Plus 插件-乐观锁插件

mybatis 乐观锁 MyBatis-Plus 插件-乐观锁插件

mybatis 乐观锁

OptimisticLockerInnerInterceptor

当要更新一条记录的时候,希望这条记录没有被别人更新

乐观锁实现方式:

  • 取出记录时,获取当前 ​version
  • 更新时,带上这个 ​version
  • 执行更新时, ​set version = newVersion where version = oldVersion
  • 如果 ​version不对,就更新失败

乐观锁配置需要两步

1、配置插件

  • spring xml 方式:
<bean class="com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor" id="optimisticLockerInnerInterceptor"/>

<bean id="mybatisPlusInterceptor" class="com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor">
    <property name="interceptors">
        <list>
            <ref bean="optimisticLockerInnerInterceptor"/>
        </list>
    </property>
</bean>

  • spring boot 注解方式:

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
    return interceptor;
}

2、在实体类的字段上加上@Version注解

@Version
private Integer version;

说明:

  • 支持的数据类型只有:​int,​Integer,​long​,​Long​,​Date​,​Timestamp​,​LocalDateTime
  • 整数类型下 ​newVersion = oldVersion + 1
  • newVersion会回写到 ​entity
  • 仅支持 ​updateById(id)​ 与 ​update(entity, wrapper)​ 方法
  • 在 ​update(entity, wrapper)​ 方法下, ​wrapper不能复用!!!

示例:

// Spring Boot 方式
@Configuration
@MapperScan("按需修改")
public class MybatisPlusConfig {
    
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }

    
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mybatisPlusInterceptor;
    }
}


阅读全文
以上是鳄鱼CMS为你收集整理的mybatis 乐观锁 MyBatis-Plus 插件-乐观锁插件全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们