配置乐观锁和分页插件

简介: 配置乐观锁和分页插件

乐观锁

乐观锁实现原理:

实际上是在表中增加了一个version字段作为版本控制,version初值为1,当进行update操作时候,会先根据id查询出这一条记录,然后再进行更新操作,更新的时候判断查询出的version和当前表的version是否相同,如果相同则进行更新并且version+1,不相同则回滚。他人同时进行更新的时候,会拿自己查询出的version和表中version进行比较。如果相同则进行更新并且version+1,不相同则回滚。

写MybatisPlusConfig配置类

@EnableTransactionManagement
@Configuration
@MapperScan("com.atguigu.springbootmybatisplus.mapper")
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}

给表添添加一个version字段

ALTER TABLE `user` ADD COLUMN `version` INT

在实体类中标注版本控制的字段

@Version
@TableField(fill = FieldFill.INSERT)
private Integer version;

设置插入时自动填充version = 1

image.png

测试乐观锁成功的情况

/**
 * 测试乐观锁成功的情况
 */
@Test
void testOptimisticLocker(){
    User user = userMapper.selectById(1654374884886777857L);
    System.out.println(user);
    user.setName("xiaozhao");
    //user.setVersion(user.getVersion()-1);
    userMapper.updateById(user);
}

测试模拟并发时已经修改的数据

/**
 * 测试乐观锁成功的情况
 */
@Test
void testOptimisticLocker(){
    User user = userMapper.selectById(1654374884886777857L);
    System.out.println(user);
    user.setName("xiaozhao");
    user.setVersion(user.getVersion()-1);
    userMapper.updateById(user);
}
相关文章
|
7月前
|
SQL Java 数据库连接
mybatis常见分页技术和自定义分页原理实战
mybatis常见分页技术和自定义分页原理实战
247 0
|
4月前
|
SQL XML Java
8、Mybatis-Plus 分页插件、自定义分页
这篇文章介绍了Mybatis-Plus的分页功能,包括如何配置分页插件、使用Mybatis-Plus提供的Page对象进行分页查询,以及如何在XML中自定义分页SQL。文章通过具体的代码示例和测试结果,展示了分页插件的使用和自定义分页的方法。
8、Mybatis-Plus 分页插件、自定义分页
|
6月前
MyBatis-Plus分页插件基于3.3.2
MyBatis-Plus分页插件基于3.3.2
MyBatis-Plus分页插件基于3.3.2
|
7月前
|
SQL 前端开发 Java
通过使用Mybatis插件来实现数据的分页功能
通过使用Mybatis插件来实现数据的分页功能
|
SQL Java 数据库连接
Mybatis 是如何进行分页的,分页插件的原理是什么?
Mybatis 是如何进行分页的,分页插件的原理是什么?
157 0
|
Java 数据库 Spring
【异常解决】解决mybatis-plus分页查询默认最多查询500条记录的问题,真是个大坑啊
【异常解决】解决mybatis-plus分页查询默认最多查询500条记录的问题,真是个大坑啊
658 0
|
XML Java 关系型数据库
MyBatis-Plus分页插件的配置和使用
MyBatis-Plus分页插件的配置和使用
1279 0
|
SQL 前端开发 数据库
Mybatis-Plus分页插件查询慢解决方案
Mybatis-Plus分页插件查询慢解决方案
1234 0
|
Java 数据库连接 数据库
Mybatis-Plus 进阶开发-自定义乐观锁插件
有的时候我们需要对mybatis-plus的乐观锁插件进行自定义修改。那么其实mybatis 是已经有个默认的实现,我们只需要将其继承并扩展即可。 0. OptimisticLockerInnerInterceptor 介绍 当要更新一条记录的时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录时,获取当前 version 更新时,带上这个 version 执行更新时, set version = newVersion where version = oldVersion 如果 version 不对,就更新失败 但是我们也可以根据自己的业务需求实现自定义的乐观锁插件。 Mybati
712 0