若依自动管理数据库表中的公用字段 -- activiti工作流养成计划(四)

目标:自动管理数据库表中的公用字段

这是个番外篇,略过不会产生任何影响

上篇中约定了5个公用字段create_by、create_time、update_by、update_time、remark,其中前四个我都希望它能自己管理。比如我新增数据时它应该自己维护create_by、create_time;我修改数据时它应该自己维护update_by、update_time。

有人说可以在mapper.xml中的sql里指定更新这几个字段啊,时间字段倒还好说,创建人、修改人这个字段不还是要传入吗。况且,咱们现在升级成mybatis-plus了,mapper.xml中的add、update等sql已经被干掉了,完全交给plus管理了。

所以为了实现这个目标,我们需要使用mybatis-plus的相关功能来实现。

因为这个算是框架基础功能,所以我们放在ruoyi-framework模块里的config包下,创建mybatitsPlus目录,新增两个类,如图

image.png

代码也贴上


package com.ruoyi.framework.config.mybatitsPlus;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

/**

* mybatis plus 配置类

*/

@Configuration

public class MPConfig {

/**

    * 自动填充字段bean

    * @return

    */

    @Bean

    public MyMetaObjectHandlermyMetaObjectHandler(){

return new MyMetaObjectHandler();

    }

}

package com.ruoyi.framework.config.mybatitsPlus;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.ruoyi.common.utils.ShiroUtils;
import org.apache.ibatis.reflection.MetaObject;

import java.util.Date;

/**
 * 自动填充的字段处理
 * 字段上方需要添加@TableField注解
 */
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "createBy", String.class, ShiroUtils.getLoginName());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推荐)
        this.strictUpdateFill(metaObject, "updateBy", String.class, ShiroUtils.getLoginName());
    }
}

这部分代码放到了码云https://gitee.com/study_badcat/ry_mp_activiti,v1.3分支

你可能感兴趣的:(若依自动管理数据库表中的公用字段 -- activiti工作流养成计划(四))