尚医通-MyBatistPlus:修改和自动填充-乐观锁(三)

news2024/11/28 0:36:19

 


目录:

(1)MyBatistPlus:修改和自动填充

(2)MyBatis-Plus-乐观锁


(1)MyBatistPlus:修改和自动填充

1、更新操作

注意:update时生成的sql自动是动态sql:UPDATE user SET age=? WHERE id=?

//修改
@Test
public void testUpdate() {
    User user =
new User();
    user.setId(
1340868235401764865L);
    user.setName(
"lucymary");
   
int count = userMapper.updateById(user);
    System.
out.println(count);
}

在测试类中写一个修改的测试当方法,

 

 

2、自动填充

需求描述:

项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。

我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作

 原来我们添加数据需要使用Set进行设值,Mp中有一种特定的方式,实现跟Set相同的效果,是针对属性值的效果

 修改数据库字段,这两个字段用自动填充完成

 

 

1.2实体类修改

实体上增加字段并添加自动填充注解

@TableField(fill = FieldFill.INSERT)
private Date createTime//create_time

@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime; //update_time

 

 

1.3实现元对象处理器接口

注意:不要忘记添加 @Component 注解

@Component

  public class MyMetaObjectHandler implements MetaObjectHandler {

  

    //mp执行添加操作,这个方法执行

    @Override

    public void insertFill(MetaObject metaObject) {

        this.setFieldValByName("createTime",new Date(),metaObject);

        this.setFieldValByName("updateTime",new Date(),metaObject);

    }

  

    //mp执行修改操作,这个方法执行

    @Override

    public void updateFill(MetaObject metaObject) {

        this.setFieldValByName("updateTime",new Date(),metaObject);

    }

}

 

 在次执行添加操作:

 

 

 

执行修改操作:

 

名字发生了修改,时间也自动发生了修改: 

 

(2)MyBatis-Plus-乐观锁

 

场景

主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新

乐观锁实现方式:

取出记录时,获取当前version

更新时,带上这个version

执行更新时, set version = newVersion where version = oldVersion

如果version不对,就更新失败

接下来介绍如何在Mybatis-Plus项目中,使用乐观锁:

 

 

 

乐观锁实现流程

4.1修改实体类

添加 @Version 注解

@Version
private Integer version;

 

4.2创建配置文件

创建包config,创建文件MybatisPlusConfig.java

此时可以删除主类中的 @MapperScan 扫描注解

@Configuration
@MapperScan
("com.atguigu.demomptest.mapper")
public class MpConfig {
   
/**
     *
乐观锁插件
     */
   
@Bean
   
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
       
return new OptimisticLockerInterceptor();
    }
}

 

注册乐观锁插件 

 给User字段添加注解,添加的时候添加默认值,这时候还要修改自动填充策略:

 先添加一条数据:

修改测试:

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

14 - 局部段描述符表

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 什么是局部段描述符表(LDT)1.1 局部段描述符选择子1.2 局部段描述符表LDT1.3 问题1.4 LDT的定义和使用2. 编程实验:使用LDT实现新功能3. 多任务程序设计的实现思路4. 待解决的问题:…

第51篇 Qt 5.5全新的开始

导语 时间转眼而逝,看一下上次发的教程,已经是一年前的事情了。这一年发生了很多事情,包括自己也包括Qt。当然,自己很忙或者说为了编写《Qt 5编程入门》这些理由,并不能为一年的搁置进行开脱,所以这里首先…

人工智能前沿——6款AI绘画生成工具

>>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 一、【前言】 二、【6款AI绘画生成工具】 1.DeepAI 2.NightCafe 3.Deep Dream Generator 4.StarryAI 5.Fotor 6.Pixso 一、【前言】 AI不仅影响商业和医疗保健等行业&#xff0c;还在创意产业中…

Flutter Web CORS解决方案2-代理转发协议

Flutter Web CORS解决方案2local-cors-proxyshelf_proxydart run shelf_proxyflutter run --dart-definewrap with shellhelp & usagemode & confrun & debuglaunch with proxyvscodeAndroid Studio遗留问题本文介绍第二种解决FlutterWeb CORS问题的方案&#xff1…

[附源码]Nodejs计算机毕业设计基于web的企业人事管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Centos7下Samba服务器配置

环境 vm下centos7.6&#xff0c;IP地址&#xff1a;192.168.139.200 Samba概述 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件&#xff0c;由服务器及客户端程序构成。SMB&#xff08;Server Messages Block&#xff0c;信息服务块&#xff09;是一种在局域网上共享文…

STM32H747AGI6技术、STM32H747AII6规格、STM32H747BGT6产品概述

产品概述&#xff1a;STM32H7高性能MCU基于高性能Arm Cortex-M7 32位RISC内核&#xff0c;工作频率高达400MHz。Cortex-M7内核具有浮点单元 (FPU) 精度&#xff0c;支持Arm双精度&#xff08;符合IEEE 754标准&#xff09;和单精度数据处理指令与数据类型。STM32H7 MCU支持全套…

第48篇 进阶(八) 3D绘图简介

导语 OpenGL是一个跨平台的用来渲染3D图形的标准API。在Qt中提供了QtOpenGL模块&#xff0c;从而很轻松地实现了在Qt应用程序中使用OpenGL&#xff0c;这主要是在QGLWidget类中完成的。因为3D绘图涉及到了专业方面的内容&#xff0c;我们下面只是讲解最简单的使用&#xff0c;…

Java基础之LinkedList

Java基础之LinkedList一、介绍二、add()一、介绍 底层是一个双向链表实现的List&#xff0c;内部每一个节点采用内部类Node表示&#xff0c;通过first、last引用分别指向链表的第一和最后一个元素非线程安全&#xff0c;可以用Collections.synchronizedList()方法对其进行包装…

Android入门第44天-Android里使用动态BroadCast

BroadCast是什么 BroadcastReceiver就是应用程序间的全局大喇叭&#xff0c;即通信的一个手段&#xff0c; 系统自己在很多时候都会发送广播&#xff0c;比如电量低或者充足&#xff0c;刚启动完&#xff0c;插入耳机&#xff0c;你有一条新的微信消息。。。这种都是使用Broad…

Windows实时运动控制软核(二):LOCAL高速接口测试之Qt

今天&#xff0c;正运动小助手给大家分享一下MotionRT7的安装和使用&#xff0c;以及使用Qt对MotionRT7开发的前期准备。 01 MotionRT7简介 MotionRT7是深圳市正运动技术推出的跨平台运动控制实时内核&#xff0c;也是国内首家完全自主自研&#xff0c; 自主可控的Windows运动…

redis的客户端

关系型数据库存储在磁盘当中&#xff0c;非关系型数据库存储在内存中 Jedis 第一步&#xff1a;导入依赖包 <dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</vers…

操作系统学习笔记

1.1 操作系统的概念、功能和目标 1.1.1 操作系统的功能和目标–系统资源的管理者 进程是一个程序的执行过程。执行前需要将该程序放到内存中&#xff0c;才能被CPU处理。 1.1.2 用户和计算机硬件之间的接口 联机命令接口交互式命令接口 脱机命令接口批处理命令接口 1.1.3…

点击化学标记试剂N3-PEG-DBCO,DBCO-PEG-azide,二苯并环辛炔聚乙二醇叠氮

N3-PEG-DBCO &#xff0c;DBCO PEG N3 &#xff0c;DBCO-PEG-azide&#xff0c;叠氮聚乙二醇环辛炔&#xff0c;二苯并环辛炔聚乙二醇叠氮产品规格&#xff1a; 1.分子量&#xff1a;1k&#xff0c;2k&#xff0c;3.4k&#xff0c;5k&#xff0c;10k&#xff0c;20k&#xff08…

百度地图三维盒子模型标注

效果图 利用百度地图mapv实现地图盒子模型标准 代码 function box() {var griddata [];for (var i 0; i < arr.length; i) {griddata.push({geometry: {type: Point,coordinates: arr[i]},properties: {count: Math.random() * (i 1) * 10000}});}var grid new mapvgl…

MySQL索引下推

1.什么是索引下推? 索引下推(Index Condition PushDown,简称ICP)是从MySQL5.6开始引入的一个特性,索引下推通过减少回表的次数来提高数据库的查询效率; 2.案例 准备: ①.为了演示索引下推,需要安装MySQL5.5和MySQL5.7两个版本的MySQL,因为索引下推是MySQL5.6版本中开始引入…

Java学习之断点调试

目录 应用场景 重要提示 定义 快捷键 运行图 案例1 案例2 案例3 案例4 练习题 第一题 题目 代码 toString方法 第二题 题目 应用场景 查找错误时&#xff0c;用断点调试一步一步的看源码执行的过程&#xff0c;从而发现错误所在 重要提示 在断点调试&#xff08;…

搭建hadoop单机环境

hadoop 笔记 sbin: 一些启动脚本 【服务端的 server bin】logs: 存放 hadoop 相关日志bin: 客户端的脚本etc: hadoop 相关的配置文件 格式化文件系统 配置免密码登录 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys# 启动…

Android DataBinding之布局中(layout)事件、运算逻辑、资源、工具类的使用与详解(七)

一、介绍 如果你学习了我前面的六篇文章&#xff0c;基本能够熟悉的处理data binding在开发过程的大多数业务&#xff0c;但是由于layout中的数据不一定满足UI上的效果&#xff0c;正常都是提前处理好数据&#xff0c;如果我们在layout引入中事件、运算逻辑、资源、工具类&…

【离散数学】代数系统 测试

1.判断题 代数系统中一个元素的左逆元一定等于该元素的右逆元。 正确答案&#xff1a; 错误 2.判断题 一个循环群的生成元不是唯一的。 正确答案&#xff1a; 正确 3.判断题 任何循环群必定是阿贝尔群&#xff0c;反之亦真。 正确答案&#xff1a; 错误 4.判断题 任何一个循环群…