Parcourir la source

:sparkles: Introducing new features. add mybatis plus meta object handler

萌萌哒Sakura酱 il y a 6 ans
Parent
commit
04f5708681

+ 51 - 0
pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusMetaObjectHandler.java

@@ -0,0 +1,51 @@
+package com.pig4cloud.pigx.common.data.mybatis;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.pig4cloud.pigx.common.security.util.SecurityUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+import java.util.Optional;
+
+/**
+ * Mybatis Plus的参数填充器
+ * @author lishangbu
+ * @date 2018/12/28
+ * 利用Mybatis Plus的参数填充器设置一些公共信息参数
+ * setFieldValByName方法传入的字段名称是Java Bean的属性
+ * 其接口默认方法会自行进行判空之类的预处理,因此不需要我们进一步操作
+ * MP 3.0.7将会变更这个方法
+ */
+@Component
+@Slf4j
+public class MybatisPlusMetaObjectHandler implements MetaObjectHandler {
+	private static final String CREATE_USER     = "createUser";
+	private static final String UPDATE_USER    = "updateUser";
+	private static final String CREATE_TIME   = "createTime";
+	private static final String UPDATE_TIME = "updateTime";
+
+	@Override
+	public void insertFill(MetaObject metaObject) {
+		this.setFieldValByName(CREATE_TIME, LocalDateTime.now(),metaObject);
+		this.setFieldValByName(CREATE_USER,getUserName(),metaObject);
+	}
+
+	@Override
+	public void updateFill(MetaObject metaObject) {
+		this.setFieldValByName(UPDATE_TIME,LocalDateTime.now(),metaObject);
+		this.setFieldValByName(UPDATE_USER,getUserName(),metaObject);
+	}
+
+	/**
+	 * 获取用户名信息
+	 * 开启details属性的情况下,通过用户实体获取用户名
+	 * 反之直接获取用户名
+	 * @return
+	 */
+	private String getUserName(){
+		return Optional.ofNullable(SecurityUtils.getUser().getUsername())
+				.orElse(SecurityUtils.getUsername());
+	}
+}

+ 2 - 1
pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories

@@ -4,4 +4,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
     com.pig4cloud.pigx.common.data.cache.RedisCacheAutoConfiguration,\
     com.pig4cloud.pigx.common.data.tenant.TenantContextHolderFilter,\
     com.pig4cloud.pigx.common.data.tenant.PigxFeignTenantConfiguration,\
-    com.pig4cloud.pigx.common.data.mybatis.MybatisPlusConfig
+    com.pig4cloud.pigx.common.data.mybatis.MybatisPlusConfig,\
+    com.pig4cloud.pigx.common.data.mybatis.MybatisPlusMetaObjectHandler