1. 程式人生 > 程式設計 >Mybatisplus自動填充實現方式及程式碼示例

Mybatisplus自動填充實現方式及程式碼示例

資料庫表的建立時間、修改時間,這些個操作一遍都是自動化完成的,我們不希望手動更新。這時候自動填充便可以發揮作用了。

1、方式一

資料庫級別(注意:不建議此方式,因為工作中不允許你修改資料庫)

步驟

在表中新增欄位create_time,update_time,給欄位賦予預設值,在需要更新的欄位(update_time)選擇更新

在實體類增加對應屬性

2、方式二

程式碼級別,建議使用

步驟

在實體類需要自動填充的屬性上加註解

package com.yl.bean;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 使用者實體類
 */
@Data
@NoArgsConstructor
public class User implements Serializable {
  @TableId(type=IdType.AUTO)
  private Integer id;
  private String name;
  private Integer age;
  private String email;
  @TableField(fill = FieldFill.INSERT )//插入資料時更新該欄位
  private Date createTime;
  @TableField(fill = FieldFill.INSERT_UPDATE)//插入和修改時更新該欄位
  private Date updateTime;
}

注意:資料庫要有對應欄位,不會自動給你生成欄位

編寫處理器來處理自動填充註解

package com.yl.handler;

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.util.Date;

/**
 * 自動填充處理器實現類
 */
@Slf4j//配置日誌輸出,也可以不配置
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
  /**
   * 插入元物件欄位填充(用於插入時對公共欄位的填充)
   *
   * @param metaObject 元物件
   */
  @Override
  public void insertFill(MetaObject metaObject) {
    //日誌輸出
    log.info("start insert fill.....");
    //欄位填充
    this.setFieldValByName("createTime",new Date(),metaObject);
    this.setFieldValByName("updateTime",metaObject);

  }

  /**
   * 更新元物件欄位填充(用於更新時對公共欄位的填充)
   *
   * @param metaObject 元物件
   */
  @Override
  public void updateFill(MetaObject metaObject) {
    //日誌輸出
    log.info("start update fill.....");
    //欄位填充
    this.setFieldValByName("updateTime",metaObject);
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。