文档链接:自动填充功能 | MyBatis-Plus (baomidou.com)
插入操作和更新操作,自动保存人和时间
@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 插入操作,自动填充
*
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
LocalDateTime localDateTime = timestamp.toLocalDateTime();
metaObject.setValue("createTime", localDateTime);
// 从请求头中获取userId
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String userId = request.getHeader(RequestHeaderName.USER_ID);
metaObject.setValue("creatorId", userId);
}
/**
* 更新操作,自动填充
*
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
LocalDateTime localDateTime = timestamp.toLocalDateTime();
metaObject.setValue("updateTime", localDateTime);
// 从请求头中获取userId
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String userId = request.getHeader(RequestHeaderName.USER_ID);
metaObject.setValue("updaterId", userId);
}
}
public class User {
@TableField(value = "create_time", fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
@TableField(value = "creator_id", fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String creatorId;
@TableField(value = "update_time", fill = FieldFill.UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
@TableField(value = "updater_id", fill = FieldFill.UPDATE)
@Schema(description = "更新人")
private String updaterId;
}