91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 如何在MyBatisPlus中使用@TableField實現一個字段自動填充功能

如何在MyBatisPlus中使用@TableField實現一個字段自動填充功能

發布時間:2021-02-04 15:22:39 來源:億速云 閱讀:1134 作者:Leah 欄目:開發技術

如何在MyBatisPlus中使用@TableField實現一個字段自動填充功能?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

場景

com.baomidou.mybatisplus.annotations.TableField
描述
value字段值(駝峰命名方式,該值可無)
update預處理 set 字段自定義注入
condition預處理 WHERE 實體條件自定義運算規則
el詳看注釋說明
exist是否為數據庫表字段( 默認 true 存在,false 不存在 )
strategy字段驗證 ( 默認 非 null 判斷,查看 com.baomidou.mybatisplus.enums.FieldStrategy )
fill字段填充標記 ( FieldFill, 配合自動填充使用 )

字段填充策略 FieldFill

描述
DEFAULT默認不處理
INSERT插入填充字段
UPDATE更新填充字段
INSERT_UPDATE插入和更新填充字段

實現

實體類中有如下屬性,通過上面的自動填充屬性,我們可以實現

在進行插入操作時對

添加了注解@TableField(fill = FieldFill.INSERT)

的字段進行自動填充。

對添加了注解@TableField(fill = FieldFill.INSERT_UPDATE)

的字段在進行插入和更新時進行自動填充。

 /**
   * 創建人
   */
  @TableField(fill = FieldFill.INSERT)
  private Long creatorId;
 
  /**
   * 創建時間
   */
  @TableField(fill = FieldFill.INSERT)
  private Date gmtCreat;
 
  /**
   * 修改人
   */
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Long modifierId;
 
  /**
   * 修改時間
   */
  @TableField(fill = FieldFill.INSERT_UPDATE)
  private Date gmtModified;
 
  /**
   * 是否可用
   */
  @TableField(fill = FieldFill.INSERT)
  private Boolean availableFlag;

這樣我們在具體業務中對實體類進行賦值就可以不用對這些公共字段進行賦值,在執行插入或者更新時就能自動賦值并插入數據庫。

那么要自動賦的值在哪里配置?

在項目的config包下新建自動填充處理類使其實現接口MetaObjectHandler

并重寫其方法:

package com.ws.api.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
 
/**
 * 自動填充處理類
 * @author badao
 * @version 1.0
 * @see
 **/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
  @Override
  public void insertFill(MetaObject metaObject) {
    this.setFieldValByName("modifierId", new Long(111), metaObject);
    this.setFieldValByName("gmtModified", new Date(), metaObject);
    this.setFieldValByName("creatorId", new Long(111), metaObject);
    this.setFieldValByName("gmtCreat",new Date(), metaObject);
    this.setFieldValByName("availableFlag",true, metaObject);  
  }
 
  @Override
  public void updateFill(MetaObject metaObject) {
    this.setFieldValByName("modifierId", new Long(111), metaObject);
    this.setFieldValByName("gmtModified", new Date(), metaObject);
  }
}

其中方法參數中第一個是前面自動填充所對應的字段,第二個是要自動填充的值。

補充:Mybatis-Plus里 @TableField注解 自動賦值功能的配置類

package com.jt.auto;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
//完成自動填充功能
@Component //將該對象交給spring容器管理
public class MyMetaObjectHandler implements MetaObjectHandler {
  /**
   * 在POJO中添加了 新增/更新的注解,但是必須在數據庫的字段中完成賦值的操作.
   * 所以.必須明確,新增/更新時操作的是哪個字段,及值是多少
   * * * @param metaObject
   */
  @Override
  public void insertFill(MetaObject metaObject) {
    this.setInsertFieldValByName("created", new Date(), metaObject);
    this.setInsertFieldValByName("updated", new Date(), metaObject);
  }
  @Override
  public void updateFill(MetaObject metaObject) {
    this.setUpdateFieldValByName("updated", new Date(), metaObject);
  }
}

@TableField注解完成自動填充賦值使用 案例:

package com.jt.pojo;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.experimental.Accessors;
//pojo基類,完成2個任務,2個日期,實現序列化
@Data
@Accessors(chain=true)
public class BasePojo implements Serializable{
 @TableField(fill = FieldFill.INSERT) //新增有效
 private Date created;
 @TableField(fill = FieldFill.INSERT_UPDATE) //新增和更新有效
 private Date updated;
}

關于如何在MyBatisPlus中使用@TableField實現一個字段自動填充功能問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昔阳县| 达拉特旗| 砀山县| 龙江县| 邓州市| 安顺市| 武夷山市| 西宁市| 广安市| 桃江县| 平湖市| 丹棱县| 丽水市| 灵寿县| 绩溪县| 阿合奇县| 石景山区| 无锡市| 衡南县| 边坝县| 临夏市| 岑巩县| 南江县| 双牌县| 阜阳市| 沽源县| 大埔区| 中方县| 塔河县| 乐亭县| 茌平县| 安达市| 安西县| 湖口县| 南川市| 永川市| 梅河口市| 弥勒县| 宿松县| 潢川县| 沽源县|