Mybatis-plus配置之日期時間自動填充實踐
一、前言
在業(yè)務(wù)開發(fā)時——每次數(shù)據(jù)更新或新增時都需要特意得去修改時間,總是進行這種繁瑣的操作,給很多后端開發(fā)人員造成了很大得困擾。
這一期我們就幫大家解決掉這個問題,MyBatis-Plus 提供了非常便捷的方式來實現(xiàn)這一功能,通過使用其內(nèi)置的 MetaObjectHandler 接口,實現(xiàn)新增日期和更改日期的快速填充,以此解放廣大碼農(nóng)朋友的雙手。
二、導(dǎo)入依賴
<!-- 內(nèi)置mybatis-plus插件依賴 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency>
三、構(gòu)造抽象類
后續(xù)所有的實體類,都可以繼承這個基礎(chǔ)的實體類,以提高代碼的復(fù)用性
在需要自動創(chuàng)建更新的屬性上,加上@TableField注解
public abstract class BasePojo { //文件創(chuàng)建,自動填充。需要實現(xiàn)MetaObjectHandle接口,進行處理 @TableField(fill = FieldFill.INSERT) private Date created; //文件更新,自動填充 @TableField(fill = FieldFill.INSERT_UPDATE) private Date updated; }
四、實現(xiàn)MetaObjectHandle接口
package com.tanhua.sso.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { // 使用嚴(yán)格模式插入填充,如果字段為null則進行填充 this.strictInsertFill(metaObject, "created", Date.class, new Date()); // 創(chuàng)建時間 this.strictInsertFill(metaObject, "updated", Date.class, new Date()); // 更新時間 } @Override public void updateFill(MetaObject metaObject) { // 使用嚴(yán)格模式更新填充,總是設(shè)置更新時間 this.strictUpdateFill(metaObject, "updated", Date.class, new Date()); } }
五、版本兼容性問題
若業(yè)務(wù)中mybatis-plus版本較低,可能不含strict方法,可以采用以下寫法
package com.tanhua.sso.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { //字段為空,自動填充字段 Object created = getFieldValByName("created", metaObject); if(null==created){ setFieldValByName("created",new Date(),metaObject); } Object updated = getFieldValByName("updated", metaObject); if(null==updated){ setFieldValByName("updated",new Date(),metaObject); } } @Override public void updateFill(MetaObject metaObject) { //更新數(shù)據(jù)時,更新字段 setFieldValByName("updated",new Date(),metaObject); } }
六、總結(jié)
至此,自動填充功能,圓滿實現(xiàn)。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java Idea TranslationPlugin翻譯插件使用解析
這篇文章主要介紹了Java Idea TranslationPlugin翻譯插件使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04

Java及Android中常用鏈?zhǔn)秸{(diào)用寫法簡單示例

springboot中validator數(shù)據(jù)校驗功能的實現(xiàn)

Spring Boot如何移除內(nèi)嵌Tomcat,使用非web方式啟動

MyBatis的各種查詢功能結(jié)果接收類型的選擇(推薦)