日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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完成字段自动填充的全部內容,希望文章能夠幫你解決所遇到的問題。

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