MybatisPlus 自动填充失效_MetaObjectHandler
发现自动填充的时候在使用过程中失效首先检查实体类中的标签
一般大家都是用在创建时间和修改时间
/**
* 创建时间
*/
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
/**
* 修改时间
*/
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
注解的属性值 (这个是MybatisPlus自己的)
public enum FieldFill {
/**
* 默认不处理
*/
DEFAULT,
/**
* 插入时填充字段
*/
INSERT,
/**
* 更新时填充字段
*/
UPDATE,
/**
* 插入和更新时填充字段
*/
INSERT_UPDATE
}
第二步检查配置类上面有没有加@Component注解,是否能被扫描到
第三步检查复写的方法里面是怎么写的:检查字段名和对应的数据类型是否一致
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
}
}
如果这些都是正确的就需要检查你是用的什么方式去操作数据库,有几种情况下是不会自动填充的
1.用xml或者注解的方式写的sql
2.操作的对象中原本就是有值的
需要注意的地方就是可能会用select出来的对象去修改,查询出来的对象是有值的,所以去修改的时候这个值是不会被覆盖的