错误描述:
Caused by: org.apache.ibatis.reflection.ReflectionException: Could not set property 'updateDate' of 'class com.example.pojo.User' with value 'Fri Jul 24 10:29:39 CST 2020' Cause: java.lang.IllegalArgumentException: argument type mismatch
at org.apache.ibatis.reflection.wrapper.BeanWrapper.setBeanProperty(BeanWrapper.java:185)
at org.apache.ibatis.reflection.wrapper.BeanWrapper.set(BeanWrapper.java:59)
at org.apache.ibatis.reflection.MetaObject.setValue(MetaObject.java:140)
at com.baomidou.mybatisplus.core.handlers.MetaObjectHandler.setFieldValByName(MetaObjectHandler.java:66)
at com.example.handler.MyMetaObjectHandker.updateFill(MyMetaObjectHandker.java:23)
解决办法:
让配置文件中的日期格式和实体类中的日期格式适配,有以下两种模式可以选择:
模式1:
实体类:
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.UPDATE)
private Date updateDate; // 注意是Date类型
配置类:
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
…………………………………………………………………………………………
}
@Override
public void updateFill(MetaObject metaObject) {
// 注意是new Date()
this.setFieldValByName("updateDate", new Date(), metaObject);
}
}
总结:
实体类中用Date
类型,配置类中用new Date()
填充自动日期值
模式2:
实体类:
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTimeupdateDate; // 注意是LocalDateTime类型
配置类:
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
…………………………………………………………………………………………
}
@Override
public void updateFill(MetaObject metaObject) {
// 注意是new Date()
this.setFieldValByName("updateDate", LocalDateTime.now(), metaObject);
}
}
总结:
实体类中用LocalDateTime
类型,配置类中用LocalDateTime.now()
自动填充日期值