entity 里面直接添加
// // 更新时间(修改的时候填充)
// @TableField(fill = FieldFill.UPDATE)
// private Date updateTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private String operator;
编写MetaObjectHandler
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
// fieldName 指的是实体类的属性名,而不是数据库的字段名
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
this.strictInsertFill(metaObject, "operator", String.class, "Jetty");
this.strictInsertFill(metaObject, "major", String.class, "222");
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
// this.strictUpdateFill(
// // 起始版本 3.3.0(推荐)
// metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
// 或者
this.strictUpdateFill(
// 起始版本 3.3.3(推荐)
metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
}
}
保存的时候如果有值,那不变,如果为空,会设置默认值,
挪到父类依然有效,
@Data
@Accessors(chain = true)
public class BaseEntity {
@TableId(type = IdType.ASSIGN_UUID)
private String id;
@TableField(fill = FieldFill.INSERT_UPDATE)
private String major;
}
不过我的是oracle 11,使用mybatis-plus 3.4.1 date型不能自动填充,这个待查,
最终把插入和修改的日期型都改成string进行保存,日期型还是有问题
// 创建时间(创建的时候填充)
@TableField(fill = FieldFill.INSERT)
private Date createTime;
//
// // 更新时间(修改的时候填充)
// @TableField(fill = FieldFill.UPDATE)
// private Date updateTime;
经过咨询,https://gitee.com/baomidou/mybatis-plus/issues/I28BS2#note_3779131
// this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)
数据库插入成功,看来还是驱动不支持 LocalDateTime 的问题,谢谢。
最后发现,date型还是没有问题,LocalDateTime 类型不行,但是我从oracle官网找了驱动,自己也尝试了几个都不支持,所以暂时修改为date型处理
在使用MyBatis-Plus的自动填充功能时,遇到date类型字段无法自动填充的问题,具体表现为报错:org.apache.ibatis.type.TypeException: Error setting null for parameter。尝试将日期类型改为String保存,但发现LocalDateTime类型不支持。经过查询官方issue,了解到date类型实际可以正常工作,问题出在LocalDateTime与Oracle驱动的兼容性上。目前采取的解决办法是将日期字段改为date类型处理。

被折叠的 条评论
为什么被折叠?



