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

Mybatis-Plus自動(dòng)填充更新操作相關(guān)字段的實(shí)現(xiàn)

 更新時(shí)間:2021年11月09日 11:42:35   作者:honvin_  
數(shù)據(jù)庫表中應(yīng)該都要有create_time、update_time字段;那么在開發(fā)中,對(duì)于這些共有字段的處理應(yīng)該要進(jìn)行統(tǒng)一,這樣就可以簡化我們的開發(fā)過程。那么本文就對(duì)Mybatis-Plus中的字段自動(dòng)填充進(jìn)行記錄

在阿里開發(fā)手冊(cè)的建表規(guī)約中有說明,數(shù)據(jù)庫表中應(yīng)該都要有create_time、update_time字段;那么在開發(fā)中,對(duì)于這些共有字段的處理應(yīng)該要進(jìn)行統(tǒng)一,這樣就可以簡化我們的開發(fā)過程。那么本文就對(duì)Mybatis-Plus中的字段自動(dòng)填充進(jìn)行記錄。

場景介紹

在項(xiàng)目的數(shù)據(jù)表設(shè)計(jì)中,每張表都有create_id、create_time、update_id、update_time這四個(gè)字段,那么在Java應(yīng)用中,針對(duì)新增和修改操作要對(duì)這四個(gè)字段進(jìn)行相應(yīng)的更改:

  • create_id、update_id要自動(dòng)填充為當(dāng)前登錄的用戶ID
  • create_time、update_time要自動(dòng)填充為當(dāng)前時(shí)間

下面說說代碼實(shí)現(xiàn):

自動(dòng)填充處理器

需要實(shí)現(xiàn)Mybatis-Plus中的MetaObjectHandler接口

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import hw.topevery.basis.runtime.UserRuntime;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.Objects;

/**
 * 更新相關(guān)字段處理器
 *
 * @author whw
 * @date 2020/1/3 16:41
 */
@Component
public class UpdateRelatedFieldsMetaHandler implements MetaObjectHandler {

    /**
     * 新增操作
     *
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createId", String.class, getCurrentUserId());
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        this.strictInsertFill(metaObject, "updateId", String.class, getCurrentUserId());
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

    /**
     * 更新操作
     *
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateId", String.class, getCurrentUserId());
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
    }

    /**
     * 獲取當(dāng)前登錄用戶ID
     *
     * @return
     */
    private String getCurrentUserId() {
        return "當(dāng)前登錄用戶ID";
    }
}

Mybatis-Plus配置類

需要將處理器注入進(jìn)Spring容器才會(huì)生效

import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import hw.topevery.kunming.wapi.handler.UpdateRelatedFieldsMetaHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Mybatis-Plus配置類
 *
 * @author whw
 * @date 2020/1/3 16:41
 */
@Configuration
public class MybatisPlusConfig {

    @Bean
    public GlobalConfig globalConfig() {
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setMetaObjectHandler(new UpdateRelatedFieldsMetaHandler());
        return globalConfig;
    }
}

配置實(shí)體類中相關(guān)字段的自動(dòng)填充策略

在@TableField注解中設(shè)置fill屬性

字段填充策略FieldFill說明

描述
DEFAULT 默認(rèn)不處理
INSERT 插入填充字段
UPDATE 更新填充字段
INSERT_UPDATE 插入和更新填充字段

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 基礎(chǔ)實(shí)體類
 *
 * @author whw
 * @date 2020/1/3 17:37
 */
@Data
public class BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "創(chuàng)建用戶ID")
    @TableField(value = "c_create_id", fill = FieldFill.INSERT)
    private String createId;

    @ApiModelProperty(value = "創(chuàng)建時(shí)間")
    @TableField(value = "c_create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @ApiModelProperty(value = "更新用戶ID")
    @TableField(value = "c_update_id", fill = FieldFill.INSERT_UPDATE)
    private String updateId;

    @ApiModelProperty(value = "更新時(shí)間")
    @TableField(value = "c_update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

我這邊是在實(shí)體中抽取了一個(gè)父類出來,當(dāng)然也可以直接在實(shí)體類的對(duì)應(yīng)字段上添加注解。

到此這篇關(guān)于MyBatis-Plus實(shí)現(xiàn)字段自動(dòng)填充功能的示例的文章就介紹到這了,更多相關(guān)MyBatis-Plus 字段自動(dòng)填充內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java的接口和抽象類深入理解

    Java的接口和抽象類深入理解

    這篇文章主要介紹了Java的接口和抽象類深入理解的相關(guān)資料,希望通過本文大家能夠理解應(yīng)用接口與抽象類的使用方法,需要的朋友可以參考下
    2017-09-09
  • Springboot啟動(dòng)同時(shí)創(chuàng)建數(shù)據(jù)庫和表實(shí)現(xiàn)方法

    Springboot啟動(dòng)同時(shí)創(chuàng)建數(shù)據(jù)庫和表實(shí)現(xiàn)方法

    這篇文章主要介紹了Springboot啟動(dòng)同時(shí)創(chuàng)建數(shù)據(jù)庫和表,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • maven項(xiàng)目install時(shí)忽略執(zhí)行test方法的總結(jié)

    maven項(xiàng)目install時(shí)忽略執(zhí)行test方法的總結(jié)

    這篇文章主要介紹了maven項(xiàng)目install時(shí)忽略執(zhí)行test方法的總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 10個(gè)Java解決內(nèi)存溢出OOM的方法詳解

    10個(gè)Java解決內(nèi)存溢出OOM的方法詳解

    在Java開發(fā)過程中,有效的內(nèi)存管理是保證應(yīng)用程序穩(wěn)定性和性能的關(guān)鍵,不正確的內(nèi)存使用可能導(dǎo)致內(nèi)存泄露甚至是致命的OutOfMemoryError(OOM),下面我們就來學(xué)習(xí)一下有哪些解決辦法吧
    2024-01-01
  • 2018版java多線程面試題集合及答案

    2018版java多線程面試題集合及答案

    這篇文章主要為大家詳細(xì)介紹了2018版java多線程面試題集合及答案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Java基礎(chǔ)知識(shí)雜文

    Java基礎(chǔ)知識(shí)雜文

    這篇文章主要介紹了Java基礎(chǔ)知識(shí)雜文,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • SpringBoot中的錯(cuò)誤處理機(jī)制源碼解析

    SpringBoot中的錯(cuò)誤處理機(jī)制源碼解析

    這篇文章主要介紹了SpringBoot中的錯(cuò)誤處理機(jī)制源碼解析,springboot根據(jù)訪問者的request中的Accept屬性來判斷要返回什么樣的數(shù)據(jù),SpringBoot存在一個(gè)錯(cuò)誤處理機(jī)制,會(huì)根據(jù)不同請(qǐng)求返回不同的結(jié)果,需要的朋友可以參考下
    2023-12-12
  • Java使用fastjson對(duì)String、JSONObject、JSONArray相互轉(zhuǎn)換

    Java使用fastjson對(duì)String、JSONObject、JSONArray相互轉(zhuǎn)換

    這篇文章主要介紹了Java使用fastjson對(duì)String、JSONObject、JSONArray相互轉(zhuǎn)換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 在eclipse中使用SVN的方法(圖文)

    在eclipse中使用SVN的方法(圖文)

    這篇文章主要介紹了在eclipse中使用SVN的方法(圖文),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 關(guān)于@Component注解的含義說明

    關(guān)于@Component注解的含義說明

    這篇文章主要介紹了關(guān)于@Component注解的含義說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評(píng)論

武乡县| 融水| 库尔勒市| 共和县| 克东县| 德钦县| 太康县| 嘉鱼县| 中江县| 龙州县| 凯里市| 宽城| 报价| 汾阳市| 天津市| 正定县| 乌兰浩特市| 朝阳区| 武义县| 云安县| 望城县| 离岛区| 昌黎县| 临洮县| 徐水县| 晋宁县| 民丰县| 新龙县| 德江县| 牟定县| 合肥市| 鄂托克前旗| 伊金霍洛旗| 洪泽县| 嘉善县| 砀山县| 方山县| 正安县| 临安市| 临颍县| 巴林右旗|