一、该问题的重现步骤是什么?
已经按照这个配置写了,但是乐观锁不生效,拦截器好像也没起作用
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技术社区 移动端