mybatisPlus自动填充:如果数据表中有字段是每次查询或者修改时都要进行同一策略的变动,如创建人、创建时间、修改人、修改时间等,可以使用自动填充,简化代码
自动填充
一共两步:
1,自定义实现类 MyMetaObjectHandler继承MetaObjectHandler
示例:
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ....");
//setFieldValByName根据字段名填充对应字段值
this.setFieldValByName("createUserId", 1, metaObject);
this.setFieldValByName("createUserName", "admin", metaObject);
this.setFieldValByName("createTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ....");
this.setFieldValByName("modifyUserId", 1, metaObject);
this.setFieldValByName("modifyUserName", "admin", metaObject);
this.setFieldValByName("modifyTime", new Date(), metaObject);
}
}
2,在对应的需要自动填充的javabean上添加注解@TableField(fill = FieldFill.UPDATE)
示例:
/**
* 创建人ID
*/
@TableField(fill = FieldFill.INSERT,value = "createUserId")
private Integer createUserId;
/**
* 创建人名称
*/
@TableField(fill = FieldFill.INSERT,value = "createUserName")
private String createUserName;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT,value = "createTime")
private LocalDateTime createTime;
/**
* 最后修改人ID
*/
@TableField(fill = FieldFill.UPDATE,value = "modifyUserId")
private Integer modifyUserId;
/**
* 最后修改人名称
*/
@TableField(fill = FieldFill.UPDATE,value = "modifyUserName")
private String modifyUserName;
/**
* 最后修改时间
*/
@TableField(fill = FieldFill.UPDATE,value = "modifyTime")
private LocalDateTime modifyTime;
备注:file的几个可选枚举值
public enum FieldFill {
/**
* 默认不处理
*/
DEFAULT,
/**
* 插入填充字段
*/
INSERT,
/**
* 更新填充字段
*/
UPDATE,
/**
* 插入和更新填充字段
*/
INSERT_UPDATE
}
上一篇:MyBatis Plus逆向生成