欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MybatisPlus插件自動(dòng)維護(hù)更新和創(chuàng)建時(shí)間方式

 更新時(shí)間:2025年04月06日 11:31:07   作者:青衣畫白扇  
這篇文章主要介紹了MybatisPlus插件自動(dòng)維護(hù)更新和創(chuàng)建時(shí)間方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

為什么要自動(dòng)去維護(hù)這兩個(gè)時(shí)間

在實(shí)際開發(fā)中基本上每張表中都有這兩個(gè)類型的字段,創(chuàng)建時(shí)間和修改時(shí)間。是為了保證數(shù)據(jù)的可追溯性,當(dāng)然肯定還是有操作日志記錄表用來做追溯記錄。

開發(fā)中每一次的創(chuàng)建更新都需要手動(dòng)去設(shè)置這一次操作的時(shí)間,會(huì)有很多的代碼冗余。

創(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)識(shí)
     */
    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í)間的自動(dòng)維護(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í)間能不能自動(dòng)更新");
    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)文章

  • Java擦除和轉(zhuǎn)換實(shí)例分析

    Java擦除和轉(zhuǎn)換實(shí)例分析

    這篇文章主要介紹了Java擦除和轉(zhuǎn)換,結(jié)合實(shí)例形式分析了java擦除和轉(zhuǎn)換概念、功能及相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • 通過Java創(chuàng)建Socket連接到服務(wù)器方式

    通過Java創(chuàng)建Socket連接到服務(wù)器方式

    這篇文章主要介紹了通過Java創(chuàng)建Socket連接到服務(wù)器方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • metershpere實(shí)現(xiàn)調(diào)用自定義jar包中的方法

    metershpere實(shí)現(xiàn)調(diào)用自定義jar包中的方法

    在MeterSphere接口測試中,面對多層循環(huán)邏輯和邏輯判斷等復(fù)雜情況,直接編寫測試用例往往顯得混亂不便,本文介紹了一個(gè)簡化這一過程的方法:首先使用IDEA創(chuàng)建Maven工程,編寫所需邏輯并生成jar包;然后在MeterSphere中上傳此jar包
    2024-10-10
  • Feign 集成 Hystrix實(shí)現(xiàn)不同的調(diào)用接口不同的設(shè)置方式

    Feign 集成 Hystrix實(shí)現(xiàn)不同的調(diào)用接口不同的設(shè)置方式

    這篇文章主要介紹了Feign 集成 Hystrix實(shí)現(xiàn)不同的調(diào)用接口不同的設(shè)置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中的while循環(huán)語句詳細(xì)講解

    Java中的while循環(huán)語句詳細(xì)講解

    這篇文章主要給大家介紹了關(guān)于Java中while循環(huán)語句的相關(guān)資料,while循環(huán)是一種在編程中常見的控制流語句,它允許代碼在特定條件下(通常是一個(gè)布爾表達(dá)式)重復(fù)執(zhí)行一段代碼,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • SpringBoot后端進(jìn)行數(shù)據(jù)校驗(yàn)JSR303的使用詳解

    SpringBoot后端進(jìn)行數(shù)據(jù)校驗(yàn)JSR303的使用詳解

    這篇文章主要介紹了SpringBoot后端進(jìn)行數(shù)據(jù)校驗(yàn)JSR303的使用詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Python學(xué)習(xí)之書寫格式及變量命名

    Python學(xué)習(xí)之書寫格式及變量命名

    這篇文章我們給大家總結(jié)了關(guān)于Python書寫格式及變量命名,小編覺得這篇文章寫的還不錯(cuò),有興趣的朋友跟著參考學(xué)習(xí)下,希望能夠給你帶來幫助
    2021-10-10
  • Java中的迭代器和foreach原理

    Java中的迭代器和foreach原理

    這篇文章主要介紹了Java中的迭代器和foreach原理,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-09-09
  • 18個(gè)Java8日期處理的實(shí)踐(太有用了)

    18個(gè)Java8日期處理的實(shí)踐(太有用了)

    這篇文章主要介紹了18個(gè)Java8日期處理的實(shí)踐(太有用了),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Java線程安全的計(jì)數(shù)器簡單實(shí)現(xiàn)代碼示例

    Java線程安全的計(jì)數(shù)器簡單實(shí)現(xiàn)代碼示例

    這篇文章主要介紹了Java線程安全的計(jì)數(shù)器簡單實(shí)現(xiàn)代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10

最新評論