4. MyBatis Plus自动填充

4. MyBatis Plus自动填充

  • 创建时间,修改时间都是自动化完成的,不需要手动更新

  • 几乎所有的数据库表都需要有以下两个字段 gmt_create、gmt_modified

  • 自动填充分为两种方式

4.1 方式一:数据库级别

​ 第一步:数据操作

  • 在数据库添加两个新的字段
  • 需要设置数据类型为datetime 需要指定默认时间为当前时间CURRENT_TIMESTAMP 更新的话需要勾选

在这里插入图片描述

​ 第二步实体类操作

  • 将实体类同步并测试
private Date gmtCreate;
private Date gmtModified;

​ 第三步:做测试

  • 原数据库信息
    在这里插入图片描述

  • 更新后数据库信息

在这里插入图片描述

4.2 方式二:代码级别

​ 第一步:数据库操作

  • 只添加两个字段,其余操作删除

在这里插入图片描述

​ 第二步:在实体类的属性上添加注解

  • @TableField
//字段添加填充内容
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
  • FieldFill是一个枚举类 (用于填充字段)
描述
DEFAULT默认不处理
INSERT插入时填充字段
UPDATE更新时填充字段
INSERT_UPDATE插入和更新时填充字段
public enum FieldFill {
    /**
     * 默认不处理
     */
    DEFAULT,
    /**
     * 插入时填充字段
     */
    INSERT,
    /**
     * 更新时填充字段
     */
    UPDATE,
    /**
     * 插入和更新时填充字段
     */
    INSERT_UPDATE
}

​ 第三步:编写处理器来处理这个注解

  • 第一个编写的容器一定要加入到spring的IOC容器中

  • 第二个编写的处理器要实现mybatis-plus的MetaObjectHandler接口

  • 第三个调用接口的setFieldValByName方法传入三个字段分别为字段名称、字段值、metaObject对象(源码在行中)

package com.xuan.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.logging.Log;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.HashSet;

/**
 * xuan
 * 2020/7/21
 * 1870136088@qq.com
 **/
@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
    //插入时的填充策略
    /**
     * 通用填充
     *  fieldName  java bean property name
     *  fieldVal   java bean property value
     *  metaObject meta object parameter
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill");
        this.setFieldValByName("gmtCreate", new Date(),metaObject);
        this.setFieldValByName("gmtModified",new Date(),metaObject);
    }

    //更新时的填充策略
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill");
        this.setFieldValByName("gmtModified", new Date(),metaObject);
    }
}

​ 第四步:测试 这里的测试跟上一步一样就不写出来了(测试是成功的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值