Mybatis Plus公共字段自动填充

        在多张表中同时存在创建时间、创建人、修改时间、修改人等字段,这些基础字段属于公共字段,那能不能对于这些公共字段在某个地方统一进行处理,从而简化开发,针对这个场景,就可以采用Mybatis Plus提供的公共字段自动填充功能。

  1. 在实体类的属性上加入@TableField注解,并根据属性fill指定字段填充策略。其中填充策略有INSERT:插入时填充字段,UPDATE:更新时填充字段,INSERT_UPDATE:插入和更新时填充字段。
    1. package com.app.studypro.entity;
      
      import com.baomidou.mybatisplus.annotation.FieldFill;
      import com.baomidou.mybatisplus.annotation.TableField;
      import lombok.Data;
      
      import java.io.Serializable;
      import java.time.LocalDateTime;
      
      /**
       * 用户信息
       *
       * @author Administrator
       */
      @Data
      public class User implements Serializable {
      
          private static final long serialVersionUID = 1L;
          /**
           * 主键
           */
          private Long id;
      
          /**
           * 用户名
           */
          private String username;
      
          /**
           * 密码
           */
          private String password;
      
          /**
           * 性别
           */
          private String sex;
      
          /**
           * 状态 0:禁用,1:正常
           */
          private Integer status;
      
          /**
           * 创建时间
           */
          @TableField(fill = FieldFill.INSERT)
          private LocalDateTime createTime;
      
          /**
           * 更新时间
           */
          @TableField(fill = FieldFill.INSERT_UPDATE)
          private LocalDateTime updateTime;
      
          /**
           * 创建人
           */
          @TableField(fill = FieldFill.INSERT)
          private Long createUser;
      
          /**
           * 修改人
           */
          @TableField(fill = FieldFill.INSERT_UPDATE)
          private Long updateUser;
      
          /**
           * 是否删除
           */
          private Integer isDeleted;
      
      }
      
  2. 然后自定义元对象字段填充控制器,实现公共字段自动写入,实现的接口类为MetaObjectHandler,并在实现类上添加注解@Component,从而添加到spring容器中,并实现insertFill(插入元对象字段填充方法)和updateFill(更新元对象字段填充方法),从而在插入和更新的操作方法处在保存数据时将会将指定的字段进行自动填充,无需一个个编写代码进行设置处理。
    1. package com.app.studypro.common;
      
      import com.app.studypro.utils.UserUtil;
      import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
      import lombok.extern.slf4j.Slf4j;
      import org.apache.ibatis.reflection.MetaObject;
      import org.springframework.stereotype.Component;
      
      import java.time.LocalDateTime;
      
      /**
       * 自定义元对象字段填充控制器,实现公共字段自动写入
       *
       * @author Administrator
       */
      @Slf4j
      @Component
      public class CustomMetaObjectHandler implements MetaObjectHandler {
      
      
          /**
           * 插入元对象字段填充(用于插入时对公共字段的填充)
           *
           * @param metaObject 元对象
           */
          @Override
          public void insertFill(MetaObject metaObject) {
              log.info("插入时对公共字段的填充");
              LocalDateTime now = LocalDateTime.now();
              Long currentUserId = UserUtil.getCurrentUserId();
              metaObject.setValue("createTime", now);
              metaObject.setValue("updateTime", now);
              metaObject.setValue("createUser", currentUserId);
              metaObject.setValue("updateUser", currentUserId);
          }
      
          /**
           * 更新元对象字段填充(用于更新时对公共字段的填充)
           *
           * @param metaObject 元对象
           */
          @Override
          public void updateFill(MetaObject metaObject) {
              log.info("更新时对公共字段的填充");
              LocalDateTime now = LocalDateTime.now();
              Long currentUserId = UserUtil.getCurrentUserId();
              metaObject.setValue("updateTime", now);
              metaObject.setValue("updateUser", currentUserId);
          }
      
      }
      
  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值