日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MyBatisPlus中使用 @TableField完成字段自动填充

發布時間:2025/3/19 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatisPlus中使用 @TableField完成字段自动填充 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

官方文檔:

字段注解?@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 {@Overridepublic 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);}@Overridepublic void updateFill(MetaObject metaObject) {this.setFieldValByName("modifierId", new Long(111), metaObject);this.setFieldValByName("gmtModified", new Date(), metaObject);} }

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

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的MyBatisPlus中使用 @TableField完成字段自动填充的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。