MybatisPlus插件自動維護(hù)更新和創(chuàng)建時(shí)間方式
為什么要自動去維護(hù)這兩個(gè)時(shí)間
在實(shí)際開發(fā)中基本上每張表中都有這兩個(gè)類型的字段,創(chuàng)建時(shí)間和修改時(shí)間。是為了保證數(shù)據(jù)的可追溯性,當(dāng)然肯定還是有操作日志記錄表用來做追溯記錄。
開發(fā)中每一次的創(chuàng)建更新都需要手動去設(shè)置這一次操作的時(shí)間,會有很多的代碼冗余。
創(chuàng)建時(shí)間還好,只是在創(chuàng)建的時(shí)候去維護(hù)但是更新時(shí)間并不能通過DB去維護(hù),MybatisPlus為我們提供了MetaObjectHandler 接口
面我們使用整個(gè)接口進(jìn)行操作
先準(zhǔn)備一下兩個(gè)實(shí)體類
這個(gè)我們繼承了一下 公共字段 PublicField
@Data
@TableName("sys_log")
public class SysLog extends PublicField implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 操作IP
*/
private String ip;
/**
* 操作類型 1 操作記錄2異常記錄
*/
private Integer runType;
/**
* 日志類型 1是登錄日志2是操作日志
*/
private Integer logType;
/**
* 操作位置 1是租戶 2是boss
*/
private Integer whereType;
/**
* 操作人
*/
private String userName;
/**
* 操作描述
*/
private String description;
/**
* 請求方法
*/
private String actionMethod;
private String actionUrl;
/**
* 請求參數(shù)
*/
private String params;
/**
* 瀏覽器
*/
private String browser;
/**
* 類路徑
*/
private String classPath;
/**
* 請求方法
*/
private String requestMethod;
/**
* 開始時(shí)間
*/
private String startTime;
/**
* 完成時(shí)間
*/
private String finishTime;
/**
* 消耗時(shí)間
*/
private Long consumingTime;
/**
* 異常詳情信息
*/
private String exDesc;
/**
* 異常描述
*/
private String exDetail;
/**
* 租戶標(biāo)識
*/
private String tenantDatakey;
/**
* 操作地點(diǎn)
*/
private String location;
/**
* 操作系統(tǒng)
*/
private String os;
/**
* 請求狀態(tài)
*
*/
public Integer status;
/**
* 返回?cái)?shù)據(jù)
*/
private String returnData;
}公共字段類:
@Data
public class PublicField {
@TableId(value = "id" ,type = IdType.AUTO)
@ApiModelProperty(value = "ID")
private Integer id;
/**
* 創(chuàng)建時(shí)間
*/
@ApiModelProperty(value = "創(chuàng)建時(shí)間")
@TableField(value = "create_date",fill = FieldFill.INSERT)
private Date createDate;
/**
* 修改日期
*/
@ApiModelProperty(value = "修改時(shí)間")
@TableField(value ="update_date" ,fill= FieldFill.INSERT_UPDATE)
private Date updateDate;
}下面我們配置一下
@Component
@Slf4j
public class MybatisPlusBaseHandler implements MetaObjectHandler {
//重寫一下insertFill方法 在插入時(shí)進(jìn)行時(shí)間的自動維護(hù)
@Override
public void insertFill(MetaObject metaObject) {
log.info("新增更新時(shí)間-------------------------");
this.strictInsertFill(metaObject,"createDate", Date.class,new Date());
this.strictUpdateFill(metaObject,"updateDate",Date.class,new Date());
}
// 修改操作是進(jìn)行時(shí)間的維護(hù)
@Override
public void updateFill(MetaObject metaObject) {
log.info("修改更新時(shí)間-------------------------");
this.strictUpdateFill(metaObject,"updateDate",Date.class,new Date());
}
}測試插入一條記錄

輸出結(jié)果:

@Test
public void inserint(){
SysLog sysLog = new SysLog();
sysLog.setId(2555);
sysLog.setDescription("測試修改時(shí)間能不能自動更新");
iLogServicel.updateById(sysLog);
}輸出結(jié)果:

在DB中也可以看到修改時(shí)間已經(jīng)更新(因?yàn)閯?chuàng)建的時(shí)候修改時(shí)間和創(chuàng)建時(shí)間是樣的現(xiàn)在 修改時(shí)間已經(jīng)更新)

最后我貼一下我的maven
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用SpringMVC響應(yīng)json格式返回的結(jié)果類型
這篇文章主要介紹了使用SpringMVC響應(yīng)json格式返回的結(jié)果類型,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Java SpringMVC實(shí)現(xiàn)PC端網(wǎng)頁微信掃碼支付(完整版)
這篇文章主要介紹了Java SpringMVC實(shí)現(xiàn)PC端網(wǎng)頁微信掃碼支付(完整版)的相關(guān)資料,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
java應(yīng)用程序如何自定義log4j配置文件的位置
這篇文章主要介紹了java應(yīng)用程序如何自定義log4j配置文件的位置,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Java基礎(chǔ)之?dāng)?shù)組超詳細(xì)知識總結(jié)
這篇文章主要介紹了Java基礎(chǔ)之?dāng)?shù)組詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
Mybatis中自定義實(shí)例化SqlSessionFactoryBean問題
這篇文章主要介紹了Mybatis中自定義實(shí)例化SqlSessionFactoryBean問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
基于mybatis中數(shù)組傳遞注意事項(xiàng)
這篇文章主要介紹了mybatis中數(shù)組傳遞注意事項(xiàng),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
JavaWeb購物車項(xiàng)目開發(fā)實(shí)戰(zhàn)指南
之前沒有接觸過購物車的東東,也不知道購物車應(yīng)該怎么做,所以在查詢了很多資料,總結(jié)一下購物車的功能實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于JavaWeb購物車項(xiàng)目開發(fā)的相關(guān)資料,需要的朋友可以參考下2022-06-06
從零開始讓你的Spring?Boot項(xiàng)目跑在Linux服務(wù)器
這篇文章主要給大家介紹了如何從零開始讓你的Spring?Boot項(xiàng)目跑在Linux服務(wù)器的相關(guān)資料,由于springboot是內(nèi)嵌了tomcat,所以可以直接將項(xiàng)目打包上傳至服務(wù)器上,需要的朋友可以參考下2021-11-11

