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

Mybatis-plus配置之日期時(shí)間自動(dòng)填充實(shí)踐

 更新時(shí)間:2025年08月11日 08:49:18   作者:java_學(xué)習(xí)愛好者  
本文介紹如何使用MyBatis-Plus的MetaObjectHandler接口實(shí)現(xiàn)新增和更新時(shí)間的自動(dòng)填充,通過(guò)繼承抽象類、添加注解及處理版本兼容性,簡(jiǎn)化開發(fā)流程并減少手動(dòng)操作

一、前言

在業(yè)務(wù)開發(fā)時(shí)——每次數(shù)據(jù)更新或新增時(shí)都需要特意得去修改時(shí)間,總是進(jìn)行這種繁瑣的操作,給很多后端開發(fā)人員造成了很大得困擾。

這一期我們就幫大家解決掉這個(gè)問(wèn)題,MyBatis-Plus 提供了非常便捷的方式來(lái)實(shí)現(xiàn)這一功能,通過(guò)使用其內(nèi)置的 MetaObjectHandler 接口,實(shí)現(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ù)所有的實(shí)體類,都可以繼承這個(gè)基礎(chǔ)的實(shí)體類,以提高代碼的復(fù)用性

在需要自動(dòng)創(chuàng)建更新的屬性上,加上@TableField注解

public abstract class BasePojo {
    //文件創(chuàng)建,自動(dòng)填充。需要實(shí)現(xiàn)MetaObjectHandle接口,進(jìn)行處理
    @TableField(fill = FieldFill.INSERT)
    private Date created;
    //文件更新,自動(dòng)填充
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updated;
}

四、實(shí)現(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則進(jìn)行填充
        this.strictInsertFill(metaObject, "created", Date.class, new Date()); // 創(chuàng)建時(shí)間
        this.strictInsertFill(metaObject, "updated", Date.class, new Date()); // 更新時(shí)間
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        // 使用嚴(yán)格模式更新填充,總是設(shè)置更新時(shí)間
        this.strictUpdateFill(metaObject, "updated", Date.class, new Date());
    }
}

五、版本兼容性問(wèn)題

若業(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) {
        //字段為空,自動(dòng)填充字段
        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ù)時(shí),更新字段
        setFieldValByName("updated",new Date(),metaObject);
    }
}

六、總結(jié)

至此,自動(dòng)填充功能,圓滿實(shí)現(xiàn)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java詳解實(shí)現(xiàn)多線程的四種方式總結(jié)

    Java詳解實(shí)現(xiàn)多線程的四種方式總結(jié)

    哈哈!經(jīng)過(guò)一個(gè)階段的學(xué)習(xí),Java基礎(chǔ)知識(shí)學(xué)習(xí)終于到多線程了!Java多線程以及后面互斥鎖的概念都是Java基礎(chǔ)學(xué)習(xí)的難點(diǎn),所以我做了一個(gè)總結(jié),希望對(duì)大家也有幫助
    2022-07-07
  • MybatisPlus3.3.0沒有MybatisPlusInterceptor類問(wèn)題的解決方法

    MybatisPlus3.3.0沒有MybatisPlusInterceptor類問(wèn)題的解決方法

    項(xiàng)目使用的是mybatis-plus-extension3.3.0依賴,然后在我使用分頁(yè)插件的時(shí)候,發(fā)現(xiàn)無(wú)法導(dǎo)入MybatisPlusInterceptor類所以本文給大家介紹了MybatisPlus3.3.0沒有MybatisPlusInterceptor類問(wèn)題的解決方法,需要的朋友可以參考下
    2023-12-12
  • TKMybatis的介紹和使用詳解

    TKMybatis的介紹和使用詳解

    TKMybatis 是基于 Mybatis 框架開發(fā)的一個(gè)工具,本文主要介紹了TKMybatis的介紹和使用詳解,內(nèi)部實(shí)現(xiàn)了對(duì)單表的基本數(shù)據(jù)操作,只需要簡(jiǎn)單繼承 TKMybatis 提供的接口,就能夠?qū)崿F(xiàn)無(wú)需編寫任何 sql 即能完成單表操作,感興趣的可以了解一下
    2021-12-12
  • SpringBoot 添加JSP 支持并附帶在IDEA下創(chuàng)建JSP文件【測(cè)試無(wú)誤】

    SpringBoot 添加JSP 支持并附帶在IDEA下創(chuàng)建JSP文件【測(cè)試無(wú)誤】

    這篇文章主要介紹了SpringBoot 添加JSP 支持并附帶在IDEA下創(chuàng)建JSP文件的相關(guān)知識(shí),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • 詳解JAVA如何實(shí)現(xiàn)樂(lè)觀鎖以及CAS機(jī)制

    詳解JAVA如何實(shí)現(xiàn)樂(lè)觀鎖以及CAS機(jī)制

    悲觀鎖和樂(lè)觀鎖其實(shí)本質(zhì)都是一種思想,在JAVA中對(duì)于悲觀鎖的實(shí)現(xiàn)大家可能都很了解,可以通過(guò)synchronized、ReentrantLock加鎖實(shí)現(xiàn),本文不展開講解了。那么樂(lè)觀鎖在JAVA中是如何實(shí)現(xiàn)的呢?底層的實(shí)現(xiàn)機(jī)制又是什么呢?本文就來(lái)和大家詳細(xì)講講
    2022-12-12
  • SpringBoot運(yùn)行時(shí)修改定時(shí)任務(wù)Cron表達(dá)式的實(shí)現(xiàn)方案

    SpringBoot運(yùn)行時(shí)修改定時(shí)任務(wù)Cron表達(dá)式的實(shí)現(xiàn)方案

    在項(xiàng)目開發(fā)中,定時(shí)任務(wù)是一個(gè)常見的需求,SpringBoot通過(guò)@Scheduled注解提供了簡(jiǎn)便的定時(shí)任務(wù)實(shí)現(xiàn)方式,但默認(rèn)情況下,一旦應(yīng)用啟動(dòng),定時(shí)任務(wù)的Cron表達(dá)式就無(wú)法動(dòng)態(tài)調(diào)整,本文將介紹如何在SpringBoot應(yīng)用運(yùn)行期間動(dòng)態(tài)修改定時(shí)任務(wù)的Cron表達(dá)式,需要的朋友可以參考下
    2025-06-06
  • Java注解Annotaton詳解

    Java注解Annotaton詳解

    Java 注解(Annotation)又稱 Java 標(biāo)注,是 JDK5.0 引入的一種注釋機(jī)制,文中給大家介紹了三種基本的Annotaton,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-05-05
  • 使用IntelliJ IDEA2020.2.2 x64 新建java項(xiàng)目并且輸出Hello World

    使用IntelliJ IDEA2020.2.2 x64 新建java項(xiàng)目并且輸出Hello World

    這篇文章主要介紹了使用IntelliJ IDEA2020.2.2 x64 新建java項(xiàng)目并且輸出Hello World,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Mybatis條件if test如何使用枚舉值

    Mybatis條件if test如何使用枚舉值

    這篇文章主要介紹了Mybatis條件if test如何使用枚舉值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 修改IDEA代碼左側(cè)折疊線顏色的操作

    修改IDEA代碼左側(cè)折疊線顏色的操作

    這篇文章主要介紹了修改IDEA代碼左側(cè)折疊線顏色的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02

最新評(píng)論

齐齐哈尔市| 二手房| 永善县| 澄城县| 民和| 沈丘县| 阳高县| 惠东县| 红桥区| 靖江市| 贵定县| 南投市| 朝阳县| 正镶白旗| 遂川县| 舟曲县| 九龙坡区| 尼勒克县| 金华市| 潍坊市| 杭锦后旗| 峨山| 兰州市| 历史| 澳门| 蕲春县| 邛崃市| 随州市| 莱阳市| 安庆市| 腾冲县| 勃利县| 通化县| 柯坪县| 当阳市| 临夏县| 辽宁省| 北流市| 金华市| 郑州市| 乐业县|