Parcourir la source

自动填充文件遗忘了

xusl il y a 2 ans
Parent
commit
261a9627f3

+ 49 - 0
backend/src/main/java/com/jiayue/ssi/handler/MyMetaObjectHandler.java

@@ -0,0 +1,49 @@
+package com.jiayue.ssi.handler;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.jiayue.ssi.entity.SysUser;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+* mybatis自动填充策略
+*
+* @author xsl
+* @since 2023/03/10
+*/
+@Component
+public class MyMetaObjectHandler implements MetaObjectHandler {
+
+
+
+    /**
+     * 插入时的填充策略
+     *
+     * @param metaObject
+     */
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        String username = ((SysUser)SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUsername();
+        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
+        this.strictInsertFill(metaObject, "createBy", String.class, username);
+        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
+        this.strictInsertFill(metaObject, "updateBy", String.class, username);
+    }
+
+    /**
+     * 更新时的填充策略
+     *
+     * @param metaObject
+     */
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        // 解决不会覆盖原值的情况
+        metaObject.setValue("updateTime", null);
+        metaObject.setValue("updateBy", null);
+        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
+        this.strictInsertFill(metaObject, "updateBy", String.class, "username");
+    }
+}