文章目录
Mybatis-plus公共字段注入
1.实体类字段添加注解
首先在需要自动注入的字段上添加注解 @TableField(fill = FieldFill.INSERT)
或者@TableField(fill = FieldFill.INSERT_UPDATE)
举个例子:
//创建时间
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
//更新时间
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
//创建人
@TableField(fill = FieldFill.INSERT)
private Long createUser;
//修改人
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;
2.实体类字段分类处理
2.1 可以直接创建的时间字段自动注入
注意:这里的createUser
和updateUser
都需要获取到当前登录者的id值才能够进行注入,而这设计到运用拦截器或者过滤器对登录信息进行获取,先不处理createUser
和updateUser
自动注入,之后再说
(1)建立结构
建议先创建一个common
包,这个功能很多实体类都会用到,所以放在公共包下,便于管理。
然后在common
包下创建MyMetaObjecthandler
类,并继承MetaObjectHandler
类。
(2)编写代码
具体代码如下:
@Slf4j
@Component
public class MyMetaObjecthandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("公共字段自动填充[insert]...");
log.info(metaObject.toString());
metaObject.setValue("createTime", LocalDateTime.now());
metaObject.setValue("updateTime",LocalDateTime.now());
//metaObject.setValue("createUser", BaseContext.getCurrentId());
//metaObject.setValue("updateUser",BaseContext.getCurrentId());
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("公共字段自动填充[update]...");