MybatisPlus自動填充創(chuàng)建(更新)時間問題
MybatisPlus自動填充創(chuàng)建(更新)時間
在大多數(shù)情況下,我們在創(chuàng)建數(shù)據(jù)庫時都會加上創(chuàng)建、更新時間這些字段,為了保證數(shù)據(jù)的可追溯性,當然肯定還是有操作日志記錄表用來做追溯記錄。
開發(fā)中每一次的創(chuàng)建更新都需要手動去設置這一次操作的時間,會有很多的代碼冗余。
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間', `create_user` bigint DEFAULT NULL COMMENT '創(chuàng)建人', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間', `update_user` bigint DEFAULT NULL COMMENT '更新人', `status` tinyint DEFAULT '1' COMMENT '狀態(tài)(備用)', `is_deleted` tinyint DEFAULT '0' COMMENT '邏輯刪除
這個時候,有沒有一種方法可以幫我們自動維護這些字段呢?
在這里的話,不得不提到MybatisPlus的功能強大了。MybatisPlus有一個擴展功能:自動填充。
此功能常見的應用場景為,插入數(shù)據(jù)的時候自動添加創(chuàng)建時間、創(chuàng)建人、修改時間、修改人、刪除標記。
通過實現(xiàn)MetaObjectHandler
接口,重寫insertFill
、updateFill
方法,當我們插入和修改數(shù)據(jù)的時候可以自動添加指定字段的值,這些不就是我們想要的效果嗎?
話不多說,上代碼!
一、實現(xiàn)MetaObjectHandler
@Component public class MybatisHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { //屬性名 this.setFieldValByName("createTime", new Date(), metaObject); //this.setFieldValByName("createUser", SecureUtil.getUserId(), metaObject); //不維護create_user可以不使用這行代碼 } @Override public void updateFill(MetaObject metaObject) { //屬性名 this.setFieldValByName("updateTime", new Date(), metaObject); //this.setFieldValByName("updateUser", SecureUtil.getUserId(), metaObject); } }
二、使用注解
/** * 進行新增或者更新操作時 * Mybatis自動進行維護時間 */ @TableField(fill= FieldFill.INSERT) private Long createUser; @TableField(fill=FieldFill.INSERT) private Date createTime; @TableField(fill=FieldFill.UPDATE) private Long updateUser; @TableField(fill=FieldFill.UPDATE) private Date updateTime;
這樣就可以做到自動維護更新、創(chuàng)建時間啦!
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
在Spring中使用Knife4j進行API文檔生成與管理的操作方法
Knife4j 是為Java MVC 框架(如Spring Boot、Spring MVC等)集成 Swagger 生成 API 文檔的增強解決方案,它基于 Swagger 的核心功能,通過定制化的前端界面和一些額外的特性,本文介紹了在Spring中使用Knife4j進行API文檔生成與管理的操作方法,需要的朋友可以參考下2024-12-12Spring?Boot常用的參數(shù)驗證技巧和使用方法
Spring Boot是一個使用Java編寫的開源框架,用于快速構(gòu)建基于Spring的應用程序,這篇文章主要介紹了Spring?Boot常用的參數(shù)驗證技巧和使用方法,需要的朋友可以參考下2023-09-09解讀@ResponseBody與@RequestBody注解的用法
這篇文章主要介紹了Spring MVC中的@ResponseBody和@RequestBody注解的用法,@ResponseBody注解用于將Controller方法的返回對象轉(zhuǎn)換為指定格式(如JSON)并通過Response響應給客戶端,@RequestBody注解用于讀取HTTP請求的內(nèi)容2024-11-11Java對象以Hash結(jié)構(gòu)存入Redis詳解
這篇文章主要介紹了Java對象以Hash結(jié)構(gòu)存入Redis詳解,和Java中的對象非常相似,卻不能按照Java對象的結(jié)構(gòu)直接存儲進Redis的hash中,因為Java對象中的field是可以嵌套的,而Redis的Hash結(jié)構(gòu)不支持嵌套結(jié)構(gòu),需要的朋友可以參考下2023-08-08SpringBoot在生產(chǎn)快速禁用Swagger2的方法步驟
這篇文章主要介紹了SpringBoot在生產(chǎn)快速禁用Swagger2的方法步驟,使用注解關(guān)閉Swagger2,避免接口重復暴露,非常具有實用價值,需要的朋友可以參考下2018-12-12