最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

為什么要自動去維護(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)文章

最新評論

新蔡县| 青冈县| 福鼎市| 大同市| 芷江| 仲巴县| 沧州市| 湟中县| 乐至县| 确山县| 威远县| 扬中市| 靖远县| 岳池县| 福海县| 桐柏县| 辽中县| 郓城县| 泾源县| 秦皇岛市| 凤凰县| 盘山县| 固镇县| 精河县| 武乡县| 新营市| 梓潼县| 黑水县| 高青县| 霍山县| 汉沽区| 宜兰县| 襄樊市| 邓州市| 宣化县| 阜平县| 确山县| 兴安县| 杨浦区| 蕉岭县| 深州市|