官方文档:``https://baomidou.com/pages/0d93c0/#optimisticlockerinnerinterceptor
1:添加version字段,并修改实体类,在version字段上加上注解@Version
2:创建配置类:
package com.dongmu.mybatisplus.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@Configuration
@MapperScan("com.dongmu.mybatisplus.mapper")
public class MybatisConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
这时候是成功的,执行完之后version字段的值会加一。
在多线程的环境下,执行的时候,如果有一个线程查询了,另一个线程又查询再进行修改那么第一次查询所做的修改就不会生效,个人认为就是必须要先查询再修改,并且修改只与它前面一次的查询相互关联。