一、该问题的重现步骤是什么?
已经按照这个配置写了,但是乐观锁不生效,拦截器好像也没起作用
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
你可以用原版的mybtis-plus的demo跑一下看看有没有问题:https://baomidou.com/plugins/optimistic-locker/#_top
我们没有对他做过封装,原版是什么功能,集成到框架里就是什么功能。
我使用的Oracle数据库,同样的配置,数据库参数一样,但是在bladexboot项目中乐观锁生效,在cloud中不生效。
entity中是有version参数的
boot配置和cloud配置,启动的时候cloud配置是进入断点的,说明配置加载了,但是实际sql打印没有,boot打印的sql有version


扫一扫访问 Blade技术社区 移动端