首页 > 编程语言 >Mybatisplus----DML编程控制

Mybatisplus----DML编程控制

时间:2023-02-18 22:12:54浏览次数:33  
标签:mpInterceptor 拦截器 Mybatisplus DML private ---- version import com

乐观锁

(1)业务并发现象带来的问题:秒杀

执行:

1、在类对象中添加version属性,在数据库表中添加version字段(默认值为1)

package com.itheima.domain;


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

@Data
//@TableName("tbl_user")
public class User {

//    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private String name;
    @TableField(value = "pwd", select = false)
    private String password;
    private Integer age;
    private String tel;
    @TableField(exist = false)
    private Integer online;
    //逻辑删除字段,标记当前记录是否被删除
//    @TableLogic(value = "0", delval = "1")
    private Integer deleted;

    @Version
    private Integer version;


}

 

 

 2、创建config.MpConfig类,在类中创建乐观锁拦截器

package com.itheima.config;

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

@Configuration
public class MpConfig {
    @Bean
    public MybatisPlusInterceptor mpInterceptor(){
        //定义mp拦截器
        MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();
        //添加具体的拦截器(分页)
        mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        //添加乐观锁拦截器
        mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());

        return mpInterceptor;
    }



}

3、测试

  @Test
    void testUpdate(){
        User user = userDao.selectById(3L);  //version=5

        User user2 = userDao.selectById(3L); //version=5

        user2.setName("Jockccc");
        userDao.updateById(user2);            //version=6

        user.setName("Jocddd");
        userDao.updateById(user);             //version=5的条件不成立

结果:

 

 控制台:

 

标签:mpInterceptor,拦截器,Mybatisplus,DML,private,----,version,import,com
From: https://www.cnblogs.com/fxzm/p/17133766.html

相关文章

  • Linux之iptables防火墙
    一、安全技术1.安全技术分类入侵检测系统(IntrusionDetectionSystems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供......
  • Istio从入门到精通——Istio 架构
    Istio架构https://istio.io/latest/docs/ops/deployment/architecture/Istio服务网格在逻辑上分为 数据平面 和 控制平面。The dataplane iscomposedofa......
  • 顺序程序设计实验报告
    题目一:编程输入任意两个数,将较小者输出程序代码:#include<stdio.h>main(){  inta,b,min;  scanf("%d,%d",&a,&b);  if(a>b)    min=b;  else   ......
  • day13-自定义拦截器
    自定义拦截器1.什么是拦截器说明:拦截器与过滤器的区别SpringMVC的拦截器(Interceptor)与JavaServlet的过滤器(Filter)类似,它主要用于拦截用户的请求并做相应的处理,通......
  • 2.13~2.17反思
    2.14Problem-C-Codeforces设x局有胜负,y局平局易得x+y=n(n-1)/2,3x+2y=kn解得x=(k-n+1)n,y=((3n-3)/2-k)n 要使得y越小越好当n为奇数时 显然k取(3n-3)/2时y=0 ......
  • 云平台的测试———(3)BigDaTa测试
    搭建Hadoop,搭建完成后用jps查看服务启动情况安装Hadoop完成后可在图形界面看到以下效果,环境运行信息 在集群节点中/usr/hdp/2.4.3.0-227/hasoop-mapreduce/目录下,存......
  • PAT-basic-1024 科学计数法 java
    一、题目科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该......
  • 2023_VNCTF_WP
     Web象棋王子直接f12,然后发现特殊字符,ctrl+c------->控制台-----------> ctrl+v回车后得到flag电子木鱼参考这篇文章:https://course.rs/basic/base-type/number......
  • uni-app:template、js、css中判断平台(hbuilderx 3.6.18)
    一,代码:<template><viewstyle=""><viewstyle="margin-top:30rpx;width:710rpx;margin-left:20rpx;text-align:center;font-size:50rpx;"><......
  • logging模块
    为什么用loglog是为了排错log用来做数据分析1.用来记录用户行为数据分析2.用来记录用户行为操作审计3.排查代码中的错误importlogging#输出的内容是有等级......