一般的业务系统,需要扩展字段,扩展字段值需要自动填充功能
@Component
public class MpMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
Date date = new Date();
this.strictInsertFill(metaObject, "dflag", Integer.class, 0);
this.strictInsertFill(metaObject, "createTime", Date.class, date);
this.strictInsertFill(metaObject, "updateTime", Date.class, date);
this.strictInsertFill(metaObject, "version", Long.class, 0L);
// 获取用户名
TrustedPrincipal principal = AuthContextHolder.getPrincipal(); // 替换成获取用户名的类
if (null != principal) {
this.strictInsertFill(metaObject, "sysCreatorId", String.class, principal.getUserCode());
this.strictInsertFill(metaObject, "sysEditorId", String.class, principal.getUserCode());
}
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
// 获取用户名
TrustedPrincipal principal = AuthContextHolder.getPrincipal(); // 替换成获取用户名的类
if (null != principal) {
this.strictInsertFill(metaObject, "sysEditorId", String.class, principal.getUserCode());
}
}
public static String getUserName() {
TrustedPrincipal principal = AuthContextHolder.getPrincipal();
if (principal != null) {
return principal.getUserName();
}
return null;
}
}
本文介绍了一个用于业务系统中自动填充扩展字段的实现方案。通过MyBatis Plus的元对象处理器(MetaObjectHandler),该方案能在插入和更新操作时自动设置默认值,如创建时间、更新时间、版本号等,并能根据当前登录用户自动填写创建者和修改者的ID。

1022

被折叠的 条评论
为什么被折叠?



