乐观锁生效问题

Blade 未结 1 125
625513227
625513227 剑圣 2025-05-01 08:58

一、该问题的重现步骤是什么?

已经按照这个配置写了,但是乐观锁不生效,拦截器好像也没起作用

https://center.javablade.com/blade/BladeX-Doc/src/branch/master/%E7%AC%AC4%E7%AB%A0%20%E5%BC%80%E5%8F%91%E8%BF%9B%E9%98%B6/4.9%20%E4%B9%90%E8%A7%82%E9%94%81%E9%85%8D%E7%BD%AE.md

mybatisPlusProperties.getTenantMode()等方法不存在


package org.springblade.common.config;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.intercept.QueryInterceptor;
import org.springblade.core.mp.plugins.BladePaginationInterceptor;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
/**
 * 公共封装包配置类
 *
 * @author Chill
 */
@Configuration(proxyBeanMethods = false)
@AllArgsConstructor
public class BladeCommonConfiguration {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(ObjectProvider<QueryInterceptor[]> queryInterceptors,
                                            TenantLineInnerInterceptor tenantLineInnerInterceptor,
                                            MybatisPlusProperties mybatisPlusProperties) {
       MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
       // // 配置租户拦截器
       // if (mybatisPlusProperties.getTenantMode()) {
       //  interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
       // }
       // // 配置分页拦截器
       // BladePaginationInterceptor paginationInterceptor = new BladePaginationInterceptor();
       // // 配置自定义查询拦截器
       // QueryInterceptor[] queryInterceptorArray = queryInterceptors.getIfAvailable();
       // if (ObjectUtil.isNotEmpty(queryInterceptorArray)) {
       //     AnnotationAwareOrderComparator.sort(queryInterceptorArray);
       //     paginationInterceptor.setQueryInterceptors(queryInterceptorArray);
       // }
       // paginationInterceptor.setMaxLimit(mybatisPlusProperties.getPageLimit());
       // paginationInterceptor.setOverflow(mybatisPlusProperties.getOverflow());
       // paginationInterceptor.setOptimizeJoin(mybatisPlusProperties.getOptimizeJoin());
       // 配置分页拦截器
       // interceptor.addInnerInterceptor(paginationInterceptor);
       // 配置乐观锁拦截器
       interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
       return interceptor;
    }
}


实体类中的参数:

version;

更新方法:

this.updateById(entity);

是不是少写哪些地方?version不需要单独的+1吗?

另外如果我不用version而是使用

private Date updateTime;

只需要添加注解就可以了吗?
二、你期待的结果是什么?实际看到的又是什么?

乐观锁生效,拦截器也不能影响原本的分页、查询等

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

cloud 4.5.0


1条回答
  • 2025-05-07 15:17

    你可以用原版的mybtis-plus的demo跑一下看看有没有问题:https://baomidou.com/plugins/optimistic-locker/#_top


    我们没有对他做过封装,原版是什么功能,集成到框架里就是什么功能。

    作者追问:2025-05-13 09:39

    我使用的Oracle数据库,同样的配置,数据库参数一样,但是在bladexboot项目中乐观锁生效,在cloud中不生效。

    entity中是有version参数的

    boot配置和cloud配置,启动的时候cloud配置是进入断点的,说明配置加载了,但是实际sql打印没有,boot打印的sql有version



    0 讨论(0)
代码语言
提交回复