使用mybatisplus开发时,有一些字段是通用的,为避免每次都要重复写代码,可以使用字段填充功能,包括 INSERT和UPDATE

一、在所需要的实体类的字段上添加

@TableField(value = "F_CREATORUSERID",fill = FieldFill.INSERT)
private String creatorUserId;
或者
@TableField(value = "F_LASTMODIFYTIME",fill = FieldFill.UPDATE)
private Date lastModifyTime;

二、添加完之后我们需要建个类继承MetaObjectHandler来实现字段填充

@Component
public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {

private UserProvider userProvider;

@Override
public void insertFill(MetaObject metaObject) {
    userProvider = SpringContext.getBean(UserProvider.class);//此处是为获取用户信息而添加的
    UserInfo userInfo=userProvider.Get();
    this.setFieldValByName("creatorUserId", userInfo.getUserId(),metaObject);
    this.setFieldValByName("creatorTime", new Date(),metaObject);
}

@Override
public void updateFill(MetaObject metaObject) {
    userProvider = SpringContext.getBean(UserProvider.class);
    UserInfo userInfo=userProvider.Get();
    this.setFieldValByName("lastModifyTime", new Date(),metaObject);
    this.setFieldValByName("lastModifyUserId", userInfo.getUserId(),metaObject);
}

}
三、需要在mybatisconfig中添加全局配置GlobalConfig

//全局配置
GlobalConfig globalConfig  = new GlobalConfig();
//配置填充器
globalConfig.setMetaObjectHandler(new MybatisPlusMetaObjectHandler());
bean.setGlobalConfig(globalConfig);
添加完这个就可以实现自动填充了

另外可以添加传过来的参数为空时才进行填充

Object enabledMark = this.getFieldValByName("enabledMark", metaObject);
if (enabledMark == null) {
                this.setFieldValByName("enabledMark", 1, metaObject);
            }
最后修改:2020 年 11 月 14 日 09 : 07 PM