zoukankan      html  css  js  c++  java
  • 时间和悲观锁

    自动填充时间

    数据库中添加字段 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更新了

  • 相关阅读:
    PHP $_SERVER 变量
    $_SERVER变量 以及 PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题
    Funs
    搞定,务必记得要以最简便的整合资源来做
    还是要好好研究开源的php
    重回编程
    登录弹窗代码(居中)
    测试工具了解指南
    工作总结1
    HTML5 contextmenu隐藏鼠标右键菜单
  • 原文地址:https://www.cnblogs.com/dragon-lan/p/14490112.html
Copyright © 2011-2022 走看看