项目技术点-MybatisPlus 实现乐观锁 (1)| 学习笔记

简介: 快速学习 项目技术点-MybatisPlus 实现乐观锁(1)

开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot)项目技术点-MybatisPlus 实现乐观锁(1)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/667/detail/11272


项目技术点-MybatisPlus 实现乐观锁(1)


目录:

一.乐观锁

二.解决办法

三.数据库中添加 version


一.乐观锁

1. 乐观锁的含义:解决问题

(1)主要解决丢失更新

(2)如果不产生事务隔离性,产生的一些读的问题

脏读

不可重复读

幻读

(3)写的问题:丢失更新问题

注:多个人在同时修改一条记录,最后一个提交的会覆盖之前提交的这种现象就叫丢失更新

例:A 和 B 同时想修改 C 的工资条,A 先修改,B 后修改,B 的修改记录就会覆盖在 A 上面。

image.png


二、解决办法

(1)悲观锁:串行(一个人在修改的时候不允许同时进行修改,效率很低)

(2)乐观锁实现方式:

取出记录时,获取当前 version

更新时,带上这个 version

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

如果 version 不对,就更新失败

注:通过一个版本号来进行修改。

例:当 A 进行修改时被赋予1版本,在进行修改时要比较当前版本和数据库版本是否匹配,进行修改之后变成版本2,再当 B 进行修改时拿到的依旧时1版本,与修改之后的不匹配所以不能再进行修改。

(3)乐观锁的应用

12306官网上进行购票时,一张票可以被几十个甚至几百个人看到,但是最综那张票会归于提前提交订单并支付的人,而剩下的人只能换时间乘车或者进行补票。

image.png


三、数据库中添加 version

(1)添加 version 字段

ALTER TABLE user" ADD COLUMN.version"INT

(2)添加属性与注解

1@Version

2@TableField(fill = FieldFill.INSERT)

3private Integer version;

(3)添加一个插件

*乐观锁插件

*/

@Bean

pubIic OptimisticLockerInterceptor optimisticLockerInterceptor()

return newOptimisticLockerInterceptor();

强调一种写法

配置类:

@Configuration

@MapperScan(" ccm.atguigu.mybatis_plus.mapper")

public class MybatisPlusConfig

相关文章
|
前端开发 Java 关系型数据库
SpringBoot+MyBatis 天猫商城项目
SpringBoot+MyBatis 天猫商城项目
208 1
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
2673 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
Java 数据库连接 mybatis
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
这篇文章讨论了在已使用MyBatis的项目中引入MyBatis-Plus后出现的"Invalid bound statement (not found)"错误,并提供了解决方法,主要是通过修改yml配置文件来解决MyBatis和MyBatis-Plus共存时的冲突问题。
成功解决: Invalid bound statement (not found) 在已经使用mybatis的项目里引入mybatis-plus,结果不能共存的解决
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
281 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
9、Mybatis-Plus 乐观锁
这篇文章介绍了Mybatis-Plus中乐观锁的实现和使用流程,包括使用场景、在实体类中添加版本号字段、配置乐观锁插件以及通过测试验证乐观锁的效果,确保在并发环境下数据的一致性。
9、Mybatis-Plus 乐观锁
|
Java 数据库连接 数据库
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
大事件后端项目05-----springboot整合mybatis
|
Java 关系型数据库 MySQL
1、Mybatis-Plus 创建SpringBoot项目
这篇文章是关于如何创建一个SpringBoot项目,包括在`pom.xml`文件中引入依赖、在`application.yml`文件中配置数据库连接,以及加入日志功能的详细步骤和示例代码。
|
SQL Java 数据库连接
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
这篇文章介绍了在Spring Boot + MyBatis + Shiro项目中,如何使用Shiro框架实现登录用户的权限验证,包括用户、角色和权限表的设计,以及通过多个表查询来收集和验证用户权限的方法和代码实现。
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
|
Java 数据库连接 Spring
搭建 spring boot + mybatis plus 项目框架并进行调试
搭建 spring boot + mybatis plus 项目框架并进行调试
379 4
|
Java 数据库连接 Maven
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类
文本,使用SpringBoot工程创建一个Mybatis-plus项目,Mybatis-plus在编写数据层接口,用extends BaseMapper<User>继承实体类