实现了MetaObjectHandler接口的代码如下
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
@Slf4j
@Component
public class DateMetaObjectHandler implements MetaObjectHandler {
@Autowired
private MybatisPlusAutoFillProperties autoFillProperties;
/**
* 是否开启了插入填充
*/
@Override
public boolean openInsertFill() {
return autoFillProperties.getEnableInsertFill();
}
/**
* 是否开启了更新填充
*/
@Override
public boolean openUpdateFill() {
return autoFillProperties.getEnableUpdateFill();
}
//插入时的填充策略
@Override
public void insertFill(MetaObject metaObject) {
Object createTime = getFieldValByName(autoFillProperties.getCreateTimeField(), metaObject);
Object updateTime = getFieldValByName(autoFillProperties.getUpdateTimeField(), metaObject);
if (createTime == null || updateTime == null) {
Date date = new Date();
if (createTime == null) {
setFieldValByName(autoFillProperties.getCreateTimeField(), date, metaObject);
}
if (updateTime == null) {
setFieldValByName(autoFillProperties.getUpdateTimeField(), date, metaObject);
}
}
}
/**
* 更新填充
*/
@Override
public void updateFill(MetaObject metaObject) {
Object updateTime = getFieldValByName(autoFillProperties.getCreateTimeField(), metaObject);
Object operateTime = getFieldValByName(autoFillProperties.getOperateTimeField(), metaObject);
if (updateTime == null || operateTime == null){
setFieldValByName(autoFillProperties.getUpdateTimeField(), new Date(), metaObject);
if (LoginUserContextHolder.getUser() != null) {
String username = LoginUserContextHolder.getUser().getUserName();
Object updateBy = getFieldValByName(autoFillProperties.getUpdateByField(), metaObject);
if (updateBy == null) {
setFieldValByName(autoFillProperties.getUpdateByField(), username, metaObject);
}
}
}
}
}
结果无效 后来发现实体类中必须添加@TableFiled(insert=xxx)注解
添加之后问题解决