• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
龙师傅文徒弟
博客园    首页    新随笔    联系   管理    订阅  订阅

时间和悲观锁

自动填充时间

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

 

posted @ 2021-03-06 11:45  龙师傅文徒弟  阅读(49)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3