MyBatis-Plus自动填充功能失效导致原因
1:先检查 字段有没有加上注解 @TableField(fill = FieldFill.INSERT_UPDATE)
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updatedTime;
2:有没有实现 MetaObjectHandler 接口 ,并且加入到 Spring 容器中
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createdTime", Date.class, new Date());
this.strictInsertFill(metaObject, "updatedTime", Date.class, new Date());
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updatedTime", Date.class, new Date());
}
}
3: @Component 是否扫码注入进去
4: baseMapper.update(null,Wrappers.<Users>lambdaUpdate()) 这样的写法是没有拦截到的,所以无效
xml 写的也无效
@update 注解也无效
baseMapper.update(null, Wrappers.<Users>lambdaUpdate()
.set(Users::getConcernType,2)
.eq(Users::getId,userId));
应该改为
baseMapper.update(users, Wrappers.<Users>lambdaUpdate()
.set(Users::getConcernType,2));
或者
Users users = new Users();
users.setId(userId);
users.setConcernType(1);
baseMapper.updateById(users);
这样可以拿到表相关信息,会执行我们的 MetaObjectHandler 实现接口