十二.mian向切面程式設計---方法san
阿新 • • 發佈:2020-09-01
實現MetaObjectHandler介面
重寫方法
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler
{
@Override
public void insertFill(MetaObject
metaObject) {
if (UserContext.getUser()
!= null) {
this.strictInsertFill(metaObject,
"creator", String.class, UserContext.getUser().getUsername());
this.strictInsertFill(metaObject, "creationtime", LocalDateTime.class, LocalDateTime.now());
Class<?> clazz = metaObject.getOriginalObject().getClass();
//如果存在最後更新時間
try {
Field lastupdate = clazz.getDeclaredField("lastupdate");
this.strictInsertFill(metaObject, "lastupdate", Timestamp.class
} catch (NoSuchFieldException ex) {
log.info(clazz.getName() + "不需要儲存lastupdatetime");
}
}
@Override
public void updateFill(MetaObject metaObject) {
if (UserContext.getUser() != null) {
this.setFieldValByName("modifier", UserContext.getUser().getUsername(), metaObject);
this.setFieldValByName("modifiedtime", LocalDateTime.now(), metaObject);
Class<?> clazz = metaObject.getOriginalObject().getClass();
//如果存在最後更新時間
try {
Field lastupdate = clazz.getDeclaredField("lastupdate");
this.setFieldValByName("lastupdate", new Timestamp(System.currentTimeMillis()), metaObject);
} catch (NoSuchFieldException ex) {
log.info(clazz.getName() + "不需要儲存lastupdatetime");
}
}
}
注意的是:如果存在資料不覆蓋,使用strictInsertFill/strictUpdateFill。比如建立時間,建立人
如果想覆蓋資料,使用setFieldValByName。比如修改時間,修改人