自动录入日期时间失败
官方文档链接:https://baomidou.com/pages/4c6bcf/
1. 传参null,自动录入时间失败,null
当时直接复制的官方文档代码,也没怎么看就直接使用了。
原因是:
字段类型与 Handler 里声明的不一致。
Handler 声明的是:LocalDateTime.class
而我的实体类里的字段类型为:Date.class
解决方法:
将Handler类中的LocalDateTime
改成Date
,统一日期类型,即可解决;
1 .MyMetaObjectHandler.java
类
package com.xxx.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 改成与实体字段相同的类型即可
// 以下是官方原帖使用方法:
// this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
// 或者
// this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class); // 起始版本 3.3.3(推荐)
// 或者
// this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 改成与实体字段相同的类型即可
// 以下是官方原帖使用方法:
// this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐)
// 或者
// this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class); // 起始版本 3.3.3(推荐)
// 或者
// this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
}
}
2 .Entity.java
类
/**
* 两个字段类型都是 >> Date
* 与官方原档的 LocalDateTime 不一致
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
成功解决这个问题~★,°:.☆( ̄▽ ̄)/$:.°★ 。