MyBatisPlus中使用 @TableField完成字段自动填充
生活随笔
收集整理的這篇文章主要介紹了
MyBatisPlus中使用 @TableField完成字段自动填充
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
場景
官方文檔:
字段注解?@TableField
- com.baomidou.mybatisplus.annotations.TableField
?
| value | 字段值(駝峰命名方式,該值可無) |
| update | 預處理 set 字段自定義注入 |
| condition | 預處理 WHERE 實體條件自定義運算規(guī)則 |
| el | 詳看注釋說明 |
| exist | 是否為數(shù)據(jù)庫表字段( 默認 true 存在,false 不存在 ) |
| strategy | 字段驗證 ( 默認 非 null 判斷,查看 com.baomidou.mybatisplus.enums.FieldStrategy ) |
| fill | 字段填充標記 ( FieldFill, 配合自動填充使用 ) |
?
-
字段填充策略 FieldFill
?
| DEFAULT | 默認不處理 |
| INSERT | 插入填充字段 |
| UPDATE | 更新填充字段 |
| INSERT_UPDATE | 插入和更新填充字段 |
實現(xiàn)
實體類中有如下屬性,通過上面的自動填充屬性,我們可以實現(xiàn)
在進行插入操作時對
添加了注解@TableField(fill = FieldFill.INSERT)
的字段進行自動填充。
對添加了注解@TableField(fill = FieldFill.INSERT_UPDATE)
的字段在進行插入和更新時進行自動填充。
?/*** 創(chuàng)建人*/@TableField(fill = FieldFill.INSERT)private Long creatorId;/*** 創(chuàng)建時間*/@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;這樣我們在具體業(yè)務中對實體類進行賦值就可以不用對這些公共字段進行賦值,在執(zhí)行插入或者更新時就能自動賦值并插入數(shù)據(jù)庫。
那么要自動賦的值在哪里配置?
在項目的config包下新建自動填充處理類使其實現(xiàn)接口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);} }其中方法參數(shù)中第一個是前面自動填充所對應的字段,第二個是要自動填充的值。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的MyBatisPlus中使用 @TableField完成字段自动填充的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA中进行SpringBoot整合s
- 下一篇: SQL中关联表并使用子表的COUNT和S