当前位置: 首页 > article >正文

MyBatis-Plus之乐观锁案例

1.数据库表中添加乐观锁标记字段

在这里插入图片描述

2.实体类中添加对应的字段,并用 @Version注解设定当前字段为乐观锁标记字段

package com.example.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

@Data
@TableName("users")
public class User {
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;
    @TableField(value = "name")
    private String name;
    @TableField(value = "number",select =false)
    private String number;
    @TableField(exist = false)
    private Integer online;
    @TableField(value = "deleted")
    @TableLogic(value = "0",delval = "1")
    private Integer deleted;
    @Version
    private Integer version;
}

3.在MyBatis-Plus配置类中添加乐观锁拦截器

package com.example.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MpConfig {
    @Bean
    public MybatisPlusInterceptor mpInterceptor() {
        // 定义MyBatis-Plus拦截器
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        // 添加乐观锁拦截器
        mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return mpInterceptor;
    }
}

4.在修改操作中使用乐观锁

    @Test
    void update(){
        User user = new User();
        user.setId(2);
        user.setNumber("123123");
        user.setVersion(2);
        userMapper.updateById(user);
    }

在这里插入图片描述
注:一定要设置乐观锁的值,否则效果等效于没有使用乐观锁(没有设置乐观锁值的运行结果如下)
在这里插入图片描述


http://www.kler.cn/a/272793.html

相关文章:

  • 【Linux】13.Linux进程概念(2)
  • 80_Redis内存策略
  • 02JavaWeb——JavaScript-Vue(项目实战)
  • lwip单网卡多ip的实现
  • RV1126+FFMPEG推流项目(7)AI音频模块编码流程
  • springCloudGateway+nacos自定义负载均衡-通过IP隔离开发环境
  • opencv人脸识别实战3:多线程和GUI界面设计(PyCharm实现)
  • C++学习基础版(一)
  • 界面控件DevExpress ASP.NET Scheduler - 助力快速交付个人信息管理系统(下)
  • react native 实现自定义底部导航与路由文件配置
  • HBase常用命令
  • Matlab|【免费】基于半不变量的概率潮流计算
  • Web 开发模式演进过程
  • 如何在webapp中手动部署
  • 蚓链助新零售企业快速实现数字化转型
  • Python使用 k 均值对遥感图像进行语义分割
  • PHP 生成图片
  • 自然语言处理实验2 字符级RNN分类实验
  • 电子科技大学链时代工作室招新题C语言部分---题号D
  • 数据表示—二进制与十进制转换
  • goland设置保存文件时不将4个空格转为TAB
  • AI实景无人自动直播间怎么搭建?三步教你轻松使用
  • 安卓面试网络知识基础 51-55
  • 从资金管理的角度谈谈个人怎样交易现货白银
  • 代码随想录算法训练营第二十五天 | 216.组合总和III 17.电话号码的字母组合
  • 数据分析 任务3