From 04f570868105ef742c963b444a039678c5edd218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E8=90=8C=E5=93=92Sakura=E9=85=B1?= Date: Fri, 28 Dec 2018 18:15:06 +0800 Subject: [PATCH] :sparkles: Introducing new features. add mybatis plus meta object handler --- .../mybatis/MybatisPlusMetaObjectHandler.java | 51 +++++++++++++++++++ .../main/resources/META-INF/spring.factories | 3 +- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusMetaObjectHandler.java diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusMetaObjectHandler.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusMetaObjectHandler.java new file mode 100644 index 000000000..0aa879ee8 --- /dev/null +++ b/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()); + } +} diff --git a/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories b/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories index 5de28f3dc..b05acce7b 100644 --- a/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories +++ b/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 \ No newline at end of file + com.pig4cloud.pigx.common.data.mybatis.MybatisPlusConfig,\ + com.pig4cloud.pigx.common.data.mybatis.MybatisPlusMetaObjectHandler \ No newline at end of file