在我们平时的程序编写过程中,经常会出现这样一个问题,多个用户有可能在同一时间更新更改某条相同记录,在这个过程中就会产生冲突。
如图所示,用户1和用户2 同时修改一条记录,最后提交的那个人就会把之前的提交数据覆盖,但是用户2 修改的数据原应是将5000改成4000,但此时只是将6000覆盖,所以,此时乐观锁就可以产生作用,乐观锁针对一种问题的特定解决方案,主要解决丢失更新的问题。 此时,用户1 修改完数据后,版本号+1,变为了2,用户2 就将无法对数据进行修改,就可以解决一些丢失更新的问题
具体实现过程
表中添加字段,作为乐观锁的版本号 对应实体类添加版本号属性在实体类版本号属性添加注解配置乐观锁插件(添加一个配置类) /加注解这是一个配置类 @Configuration @MapperScan("com.ljq01.mpdemo01.mapper")//扫描接口,加上mapper包的地址 //可以将其它配置一起放在这个文件中 public class MpConfig { /** * 乐观锁插件 */ @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor(){ return new OptimisticLockerInterceptor(); } } 乐观锁测试 //测试乐观锁 @Test public void testOptimistLocker(){ //根据id查询数据 User user = userMapper.selectById(202069); //进行修改 user.setUsername("maomao"); userMapper.updateById(user); }版本号变为2
