我的新博客:https://blog.rain888.cn/
使用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); }
我的博客:https://blog.rain888.cn/,歡迎來訪