目标:自动管理数据库表中的公用字段
这是个番外篇,略过不会产生任何影响
上篇中约定了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目录,新增两个类,如图
代码也贴上
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分支