实体类的date类型和数据库的datetime类型不匹配问题

 ??初学mybatis时,照着官网的流程最后报错:Could not set property ‘createTime‘ of ‘class com.yjx.user.User‘ with value ‘Wed Jul 21 10:25:35 CST 2021‘ Cause: java.lang.IllegalArgumentException: argument type mismatch
 ??还是比较明显能看出来是数据类型不匹配的问题,上网查了下,数据库中datetime对应的java中的数据类型是LocalDateTime,问题解决。

实体类代码

将 Date 改成 LocalDateTime

//字段添加填充内容
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
handler代码

将 new Date() 改成 LocalDateTime.now()

@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
    //插入时的填充策略
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill....");
        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }

    //更新时的填充策略
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill....");
        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
    }
}

实体类的date类型和数据库的datetime类型不匹配问题

上一篇:spring boot application.properties文件


下一篇:ApplicationContext的初始化与销毁&Bean的生命周期&BeanPostProcessor的使用&Aware使用(四)