您好,登錄后才能下訂單哦!
小編給大家分享一下Mybatis-Plus如何自動填充更新操作相關字段,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在項目的數據表設計中,每張表都有create_id、create_time、update_id、update_time這四個字段,那么在Java應用中,針對新增和修改操作要對這四個字段進行相應的更改:
create_id
、update_id
要自動填充為當前登錄的用戶ID
create_time
、update_time
要自動填充為當前時間
下面說說代碼實現:
需要實現Mybatis-Plus中的MetaObjectHandler接口
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import hw.topevery.basis.runtime.UserRuntime; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.Objects; /** * 更新相關字段處理器 * * @author whw * @date 2020/1/3 16:41 */ @Component public class UpdateRelatedFieldsMetaHandler implements MetaObjectHandler { /** * 新增操作 * * @param metaObject */ @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createId", String.class, getCurrentUserId()); this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "updateId", String.class, getCurrentUserId()); this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); } /** * 更新操作 * * @param metaObject */ @Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updateId", String.class, getCurrentUserId()); this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); } /** * 獲取當前登錄用戶ID * * @return */ private String getCurrentUserId() { return "當前登錄用戶ID"; } }
需要將處理器注入進Spring容器才會生效
import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import hw.topevery.kunming.wapi.handler.UpdateRelatedFieldsMetaHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Mybatis-Plus配置類 * * @author whw * @date 2020/1/3 16:41 */ @Configuration public class MybatisPlusConfig { @Bean public GlobalConfig globalConfig() { GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setMetaObjectHandler(new UpdateRelatedFieldsMetaHandler()); return globalConfig; } }
在@TableField注解中設置fill屬性
字段填充策略FieldFill說明
值 | 描述 |
---|---|
DEFAULT | 默認不處理 |
INSERT | 插入填充字段 |
UPDATE | 更新填充字段 |
INSERT_UPDATE | 插入和更新填充字段 |
import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * 基礎實體類 * * @author whw * @date 2020/1/3 17:37 */ @Data public class BaseEntity implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "創建用戶ID") @TableField(value = "c_create_id", fill = FieldFill.INSERT) private String createId; @ApiModelProperty(value = "創建時間") @TableField(value = "c_create_time", fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "更新用戶ID") @TableField(value = "c_update_id", fill = FieldFill.INSERT_UPDATE) private String updateId; @ApiModelProperty(value = "更新時間") @TableField(value = "c_update_time", fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; }
以上是“Mybatis-Plus如何自動填充更新操作相關字段”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。