mybatis-plus3.3.0自动填充方法有改变?

来源:-

白鹿洞

2020-01-17 16:37

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        log.warn(" ==> start insert fill ....");
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.warn(" ==> start update fill ....");
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }
}


写回答 关注

3回答

  • 老猿
    2020-01-19 09:42:16
    已采纳

    刚才看了一下mp3.3.0 MetaObjectHandler类的源码。strictInsertFill和strictUpdateFill是3.3.0新增的方法,它把

    setInsertFieldValByName方法标识为过期方法了,并建议用strictInsertFill替代。
    setUpdateFieldValByName方法也标识为过期方法了,并建议使用strictUpdateFill替代。


    老猿 回复白鹿洞

    不客气同学,你的写法正确。

    2020-01-19 13:20:21

    共 2 条回复 >

  • 芳心纵火犯GG
    2021-01-16 18:03:43

    楼上说的是正确的,3.4.1的版本(不知道之后的版本有没有修改用法)方法需要先执行一步把原值设成NULL,现在的,原代码中就是提示原值不为NULL则不会更新

    var ut = getFieldValByName("updateTime", metaObject);
    if (ut != null) {
        metaObject?.setValue("updateTime", null)
        //7.填充更新时间
        strictUpdateFill(metaObject, "updateTime", LocalDateTime::class.java, LocalDateTime.now())
    }


    芳心纵火犯G...

    我这是KOTLIN的写法, 代码贴入IDEA可以自动翻译成JAVA

    2021-01-16 18:04:38

    共 1 条回复 >

  • greamord
    2020-06-15 09:21:33
    @Override
    public void updateFill(MetaObject metaObject) {
       this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }
    使用strictUpdateFill()方法,跟新数据库中的update_time时间更新不了。

    http://img2.mukewang.com/5ee6cd1900017c5518990765.jpg

MyBatis-Plus进阶

MyBatis-Plus框架进阶课程

23296 学习 · 118 问题

查看课程

相似问题