MybatisPlus自動(dòng)填充創(chuàng)建(更新)時(shí)間問(wèn)題
MybatisPlus自動(dòng)填充創(chuàng)建(更新)時(shí)間
在大多數(shù)情況下,我們?cè)趧?chuàng)建數(shù)據(jù)庫(kù)時(shí)都會(huì)加上創(chuàng)建、更新時(shí)間這些字段,為了保證數(shù)據(jù)的可追溯性,當(dāng)然肯定還是有操作日志記錄表用來(lái)做追溯記錄。
開(kāi)發(fā)中每一次的創(chuàng)建更新都需要手動(dòng)去設(shè)置這一次操作的時(shí)間,會(huì)有很多的代碼冗余。
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', `create_user` bigint DEFAULT NULL COMMENT '創(chuàng)建人', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間', `update_user` bigint DEFAULT NULL COMMENT '更新人', `status` tinyint DEFAULT '1' COMMENT '狀態(tài)(備用)', `is_deleted` tinyint DEFAULT '0' COMMENT '邏輯刪除
這個(gè)時(shí)候,有沒(méi)有一種方法可以幫我們自動(dòng)維護(hù)這些字段呢?
在這里的話,不得不提到MybatisPlus的功能強(qiáng)大了。MybatisPlus有一個(gè)擴(kuò)展功能:自動(dòng)填充。
此功能常見(jiàn)的應(yīng)用場(chǎng)景為,插入數(shù)據(jù)的時(shí)候自動(dòng)添加創(chuàng)建時(shí)間、創(chuàng)建人、修改時(shí)間、修改人、刪除標(biāo)記。
通過(guò)實(shí)現(xiàn)MetaObjectHandler接口,重寫insertFill、updateFill方法,當(dāng)我們插入和修改數(shù)據(jù)的時(shí)候可以自動(dòng)添加指定字段的值,這些不就是我們想要的效果嗎?
話不多說(shuō),上代碼!
一、實(shí)現(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);
//不維護(hù)create_user可以不使用這行代碼
}
@Override
public void updateFill(MetaObject metaObject) {
//屬性名
this.setFieldValByName("updateTime", new Date(), metaObject);
//this.setFieldValByName("updateUser", SecureUtil.getUserId(), metaObject);
}
}二、使用注解

/** * 進(jìn)行新增或者更新操作時(shí) * Mybatis自動(dòng)進(jìn)行維護(hù)時(shí)間 */ @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;
這樣就可以做到自動(dòng)維護(hù)更新、創(chuàng)建時(shí)間啦!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MybatisPlus自動(dòng)填充時(shí)間的配置類實(shí)現(xiàn)
- MyBatisPlus實(shí)現(xiàn)自動(dòng)填充字段的實(shí)踐
- mybatisplus實(shí)現(xiàn)自動(dòng)填充時(shí)間的項(xiàng)目實(shí)踐
- mybatisplus自動(dòng)填充屬性值的實(shí)現(xiàn)步驟
- mybatisPlus自動(dòng)填充更新時(shí)間的示例代碼
- Mybatisplus自動(dòng)填充實(shí)現(xiàn)方式及代碼示例
- MybatisPlus 自動(dòng)填充的實(shí)現(xiàn)
- MybatisPlus字段自動(dòng)填充&樂(lè)觀鎖的方法實(shí)現(xiàn)
相關(guān)文章
Spring中ResponseBodyAdvice的使用詳解
這篇文章主要介紹了Spring中ResponseBodyAdvice的使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10
idea插件之mybatis log plugin控制臺(tái)sql的問(wèn)題
這篇文章主要介紹了idea插件之mybatis log plugin控制臺(tái)sql,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Spring boot中filter類不能注入@Autowired變量問(wèn)題
這篇文章主要介紹了Spring boot中filter類不能注入@Autowired變量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java中JSON字符串反序列化(動(dòng)態(tài)泛型)
文章討論了在定時(shí)任務(wù)中使用反射調(diào)用目標(biāo)對(duì)象時(shí)處理動(dòng)態(tài)參數(shù)的問(wèn)題,通過(guò)將方法參數(shù)存儲(chǔ)為JSON字符串并進(jìn)行反序列化,可以實(shí)現(xiàn)動(dòng)態(tài)調(diào)用,然而,這種方式容易導(dǎo)致內(nèi)存溢出(OOM),這篇文章主要介紹了JSON字符串反序列化?動(dòng)態(tài)泛型,需要的朋友可以參考下2024-12-12
java動(dòng)態(tài)規(guī)劃算法——硬幣找零問(wèn)題實(shí)例分析
這篇文章主要介紹了java動(dòng)態(tài)規(guī)劃算法——硬幣找零問(wèn)題,結(jié)合實(shí)例形式分析了java動(dòng)態(tài)規(guī)劃算法——硬幣找零問(wèn)題相關(guān)原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2020-05-05
logback 實(shí)現(xiàn)給變量指定默認(rèn)值
這篇文章主要介紹了logback 實(shí)現(xiàn)給變量指定默認(rèn)值操作,具有很好的參考家價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Thymeleaf對(duì)象的使用之基本對(duì)象實(shí)例解析
這篇文章主要介紹了Thymeleaf對(duì)象的使用之基本對(duì)象實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

