新建实体公共字段类
@Data
public class BaseEntity {
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime updateTime;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long createUser;
/**
* 修改人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;
}
上述代码中,我们定义了四个公共字段,分别是 createTime、createUser、updateTime、updateUser,并使用 @TableField 注解通过 fill 属性指定了各个字段的填充方式。
实现 MetaObjectHandler 接口,并在Mybatis-plus 中启用自动填充
@Configuration
public class MyBatisPlusConfig {
@Bean
public MetaObjectHandler metaObjectHandler() {
return new MetaObjectHandler() {
@Autowired
private HttpServletRequest httpServletRequest;
@Override
public void insertFill(MetaObject metaObject) {
Object employeeId = httpServletRequest.getSession().getAttribute("employee");
this.setFieldValByName("createUser", employeeId, metaObject);
this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
this.setFieldValByName("updateUser", employeeId, metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
Object employeeId = httpServletRequest.getSession().getAttribute("employee");
this.setFieldValByName("updateUser", employeeId, metaObject);
this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
}
};
}
}
上述代码中,实现了 MetaObjectHandler 接口的两个方法 insertFill 和 updateFill,其中 insertFill 方法可以用于在插入数据时填充公共字段的值,updateFill 方法可以用于在更新数据时更新公共字段的值










