为了账号安全,请及时绑定邮箱和手机立即绑定

添加了乐观锁,updateTime不会自动填充。

添加了乐观锁,updateTime不会自动填充是怎么回事?

实体类:

//创建时间
    //设置自动填充
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;

//修改时间;
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;

//版本,乐观锁插件时会用到;默认值1,插入时不设置此字段;

@Version
private Integer version;


更新测试代码:

@Test
public void UpdateById() {
    int version=2;//假设取出了小舞的版本为1;
    User user = new User();
    user.setEmail("xw@baomidou.com");
    user.setAge(100018);
    user.setVersion(version);//添加了乐观锁,预期version会变为2;
    user.setId(1547000994376744961L);//小舞
    int rows = userMapper.updateById(user);
    System.out.println("影响行数:" + rows);

}


自动填充优化设置代码:

@Override
public void updateFill(MetaObject metaObject) {
    boolean fieldValByName = metaObject.hasSetter("updateTime");
    if (fieldValByName){
        System.out.println("updateFill~ ~ ~ ~ ~");
        this.setFieldValByName("updateTime",LocalDateTime.now(),metaObject);
    }

}

测试结果,updateTime不会自动填充;

updateFill~ ~ ~ ~ ~

DEBUG==>  Preparing: UPDATE user SET age=?, email=?, update_time=?, version=? WHERE id=? AND version=? AND deleted=0 

DEBUG==> Parameters: 100018(Integer), xw@baomidou.com(String), null, 3(Integer), 1547000994376744961(Long), 2(Integer)

DEBUG<==    Updates: 1

影响行数:1

我去测试过没有setVersion()的代码,会自动填充updateTime,难道乐观锁和自动填充会冲突?但是显然不可能,老师的视频中已经演示自动填充成功了。到底是为什么?求解!



正在回答

1 回答

查阅官网,发现要用了新的版本,加入了如下代码:

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
    mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
    return mybatisPlusInterceptor;
}

http://img1.sycdn.imooc.com//62cee56d000119a018340955.jpg

添加了依赖:

<!--        MybatisPlusInterceptor乐观锁-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.5.2</version>
        </dependency>
    </dependencies>


问题完美解决!!

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

添加了乐观锁,updateTime不会自动填充。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信