• 时间和悲观锁


    自动填充时间

    数据库中添加字段 create_time和update_time,用代码实现自动填充时间:

    1、在实体类添加注解@TableField

    2、写一个处理类继承 MetaObjectHandler。

    @Component  //一定不能忘了把该组件添加到IOC容器中
    @Slf4j
    public class MyObjectHandler implements MetaObjectHandler {
    
        //插入时的填充策略
        @Override
        public void insertFill(MetaObject metaObject) {
            log.info("start insert fill...");
            this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
            this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
        }
    
        //更新时的填充策略
        @Override
        public void updateFill(MetaObject metaObject) {
            log.info("start update fill...");
            this.setFieldValByName("updateTime",LocalDateTime.now(), metaObject);
        }
    }

    乐观锁

    乐观锁:十分乐观,它总是认为不会出现问题,无论干什么都不去上锁,如果出现问题,再次更新值测试。

    悲观锁:十分悲观,它总是认为会出问题,无论干什么都会上锁,再去操作。

     乐观锁实现方式

    • 取出记录时,获取当前version
    • 更新时,带上这个version
    • 执行更新时, set version = newVersion where version = oldVersion
    • 如果version不对,就更新失败

     1、给数据库增加字段version

     2、在实体类添加对应字段

     3、添加组件

    @EnableTransactionManagement
    @Configuration
    public class MybatisPlusConfig {
    
        //注册乐观锁插件
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
            return interceptor;
        }
    }

    4、测试,可以看到version更新了

  • 相关阅读:
    第01组 Beta冲刺(2/5)
    第01组 beta冲刺(1/5)
    软工实践个人总结
    第01组 每周小结(3/3)
    第01组 每周小结(2/3)
    第01组 每周小结 (1/3)
    第01组_Beta冲刺总结
    第01组 Beta冲刺(5-5)
    第01组 Beta冲刺(4-5)
    第01组 Beta冲刺(3-5)
  • 原文地址:https://www.cnblogs.com/dragon-lan/p/14490112.html
Copyright © 2020-2023  润新知