前言
接手一个项目,使用的 MybatisPlus 但是字段是 Date 类型 自己想要使用 LocalDateTime 类型,且不想改动之前的代码
思路
直接从 MetaObject 这个地方下手
@Override
public void insertFill(MetaObject metaObject) {
Object createTimeField;
Object updateTimeField;
Class<?> createTimeType;
Class<?> updateTimeType;
createTimeField = this.getFieldValByName("createTime", metaObject);
updateTimeField = this.getFieldValByName("updateTime", metaObject);
createTimeType = metaObject.getGetterType("createTime");
updateTimeType = metaObject.getGetterType("updateTime");
if (isNull(createTimeField)) {
if (createTimeType.equals(Date.class)) {
this.strictInsertFill(metaObject,"createTime", Date::new,Date.class);
} else if (createTimeType.equals(LocalDateTime.class)){
this.strictInsertFill(metaObject,"createTime", LocalDateTime::now,LocalDateTime.class);
}
}
if (isNull(updateTimeField)){
if (updateTimeType.equals(Date.class)) {
this.strictInsertFill(metaObject,"updateTime", Date::new,Date.class);
} else if (updateTimeType.equals(LocalDateTime.class)){
this.strictInsertFill(metaObject,"updateTime", LocalDateTime::now,LocalDateTime.class);
}
}
this.setFieldValByName("deleted", 0, metaObject);
}
通过 metaObject.getGetterType() 这个方法拿到字段的类型,再判断
结尾
本文内容不多,希望能给之后也遇到这个情况的同学提供一个方法