Mybatis-Plus乐观锁配置流程

 更新时间:2024年01月05日 08:49:18   作者:白大锅  
这篇文章主要介绍了Mybatis-Plus乐观锁配置使用流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作有一定的参考学习价值,感兴趣的朋友们下面随着小编来一起学习吧

一.乐观锁实现

1.配置插件

(1).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>

(2).Springboot注解方式

下方为博主使用时场景 单独写config带@Bean注解

private MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mpi = new MybatisPlusInterceptor();
        //添加乐观锁拦截器
        mpi.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mpi;
    }

单独写config文件如下:

// 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;
    }
}

2.实体类字段增加注解

@Version
private Integer versionNumber;

注意:支持的数据类型有int,Integer,long,Long,Date,Timestamp,LocalDateTime并且仅支持 updateById(id) 与 update(entity, wrapper) 方法在 update(entity, wrapper) 方法下, wrapper 不能复用!!!

二.Parameter ‘MP_OPTLOCK_VERSION_ORIGINAL‘ not found. Available parameters are [param1, et]问题解决

本身乐观锁使用比较简单 但是遇到了乐观锁插件注入失败问题 网上解决思路如下:

1、先在数据库表中添加version字段
2、在实体类中定义version字段,并使用@Version注解标记
3、在mybatis-plus拦截器中添加OptimisticLockerInnerInterceptor()乐观锁拦截器

但是并未解决我的问题 随后查看项目 发现项目中已经创建了一个sqlSessionFactory:

在这里插入图片描述

本身mybatisplus在启动项目时会自动扫描并注入相关插件 但是此处单独配置后 并且添加了@Primary注解 后续就只会走此处的配置 所以我们在外部添加的添加乐观锁插件实际并未真正添加成功 或者说并没有走我们添加乐观锁插件的代码 解决如下:

在这里插入图片描述

在这里插入图片描述

还有一种思路就是 启动类禁用掉之前配置 那我们单独写的添加乐观锁配置类也可以生效~

以上就是Mybatis-Plus乐观锁配置流程的详细内容,更多关于Mybatis-Plus乐观锁的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot集成MongoDB的实现

    SpringBoot集成MongoDB的实现

    本文主要介绍了SpringBoot集成MongoDB的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • SpringBoot项目启动执行任务的多种方法小结

    SpringBoot项目启动执行任务的多种方法小结

    这篇文章主要介绍了SpringBoot项目启动执行任务的多种方法小结,本文给大家分享的这几种方法经常会被用到,当我们的项目启动后需要调用对应的方法,用来项目的初始化等,本文通过示例代码讲解的非常详细,需要的朋友参考下吧
    2023-07-07
  • 关于pom.xml中maven无法下载springcloud包问题

    关于pom.xml中maven无法下载springcloud包问题

    小编遇到这样一个问题spring-cloud-starter-feign,spring-cloud-starter-eureka 一直无法下载,maven仓库中包路径显示为unknown,怎么解决呢?下面小编给大家带来了pom.xml中maven无法下载springcloud包问题,需要的朋友可以参考下
    2022-08-08
  • Java利用位运算实现乘法运算详解

    Java利用位运算实现乘法运算详解

    这篇文章主要为大家详细介绍了Java如何用位运算实现乘法运算,在实现乘法时要用位运算实现,并且不能出现加减乘除任何符号,感兴趣的可以了解一下
    2023-04-04
  • 剑指Offer之Java算法习题精讲数组与列表的查找及字符串转换

    剑指Offer之Java算法习题精讲数组与列表的查找及字符串转换

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • SpringBoot中@ComponentScan的使用详解

    SpringBoot中@ComponentScan的使用详解

    这篇文章主要介绍了SpringBoot中@ComponentScan的使用详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 处理Log4j2不能打印行号的问题(AsyncLogger)

    处理Log4j2不能打印行号的问题(AsyncLogger)

    这篇文章主要介绍了处理Log4j2不能打印行号的问题(AsyncLogger),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java使用雪花id生成算法详解

    Java使用雪花id生成算法详解

    SnowFlake算法,是Twitter开源的分布式id生成算法,在2014年开源,开源的版本由scala编写。其核心思想就是-使用一个64bit的long型的数字作为全局唯一id
    2022-12-12
  • Logger.getLogger()与LogFactory.getLog()的区别详解

    Logger.getLogger()与LogFactory.getLog()的区别详解

    LogFactory来自common-logging包。如果用LogFactory.getLog,你可以用任何实现了通用日志接口的日志记录器替换log4j,而程序不受影响
    2013-09-09
  • 解决@Scope(“prototype“)不生效的问题

    解决@Scope(“prototype“)不生效的问题

    这篇文章主要介绍了解决@Scope(“prototype“)不生效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06

最新评论