Mybatis Plus update time creatDate field error Could not set property 'creatDate'

background     

MySQL database, the field name in the table is creatDate , and the type is datetime. The corresponding variable in the Java entity class is  creatDate of type java.time.LocalDateTime .

When using the new and updated methods, the creation date time and last update time are automatically updated.

entity class
/**
 * 创建日期
 */
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField(value = "creatDate",fill = FieldFill.INSERT)
private LocalDateTime creatDate;

/**
 * 更新日期
 */
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
@TableField(value = "lastUpDate",fill = FieldFill.INSERT_UPDATE)
private LocalDateTime lastUpDate;

Using the idea of ​​AOP, implement the  MetaObjectHandler interface, and implement the  insertFill  and  updateFill  methods, as follows:

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("creatDate",new Date(), metaObject);
        this.setFieldValByName("lastUpDate", new Date(), metaObject);    
    }

    @Override
public void updateFill(MetaObject metaObject) {
         this.setFieldValByName("lastUpDate", new Date(), metaObject);    
    }
}

Could not set property 'creatDate' of 'class com.siyuan.articles.model.Content' with value 'Fri Jul 03 10:21:44 CST 2020' Cause: java.lang.IllegalArgumentException: argument type mismatch

The reason is that the entity class is of type LocalDateTime, while it is of type new Date() in MyMetaObjectHandler, so this error is reported. Just change the new Date() in MyMetaObjectHandler to LocalDateTime.now() ;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("creatDate",LocalDateTime.now(), metaObject);
        this.setFieldValByName("lastUpDate", LocalDateTime.now(), metaObject);    
    }

    @Override
public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("lastUpDate", LocalDateTime.now(), metaObject);    
    }
}

 

{{o.name}}
{{m.name}}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324136681&siteId=291194637