MybatisPlus插入时,自动映射失效

起初写的代码

实体类中

/**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

过滤器中

/**
     * 当插入时,对创建时间和更新时间字段进行自动填充
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
          
   
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

    /**
     * 当更新时,对更新时间字段进行自动填充
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
          
   
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

更改后的

实体类中

/**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

过滤器中

/**
     * 当插入时,对创建时间和更新时间字段进行自动填充
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
          
   
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

    /**
     * 当更新时,对更新时间字段进行自动填充
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
          
   
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

经过排查总结:

是因为实体类中,和过滤器中所填入的类型不同导致,将类型更改成一致的则正常自动映射

经验分享 程序员 微信小程序 职场和发展