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

Mybatis-Plus自動填充更新操作相關字段的實現(xiàn)

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

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

場景介紹

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

  • create_id、update_id要自動填充為當前登錄的用戶ID
  • create_timeupdate_time要自動填充為當前時間

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

自動填充處理器

需要實現(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;

/**
 * 更新相關字段處理器
 *
 * @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());
    }

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

Mybatis-Plus配置類

需要將處理器注入進Spring容器才會生效

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;
    }
}

配置實體類中相關字段的自動填充策略

在@TableField注解中設置fill屬性

字段填充策略FieldFill說明

描述
DEFAULT 默認不處理
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;

/**
 * 基礎實體類
 *
 * @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)建時間")
    @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 = "更新時間")
    @TableField(value = "c_update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

我這邊是在實體中抽取了一個父類出來,當然也可以直接在實體類的對應字段上添加注解。

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

相關文章

  • 詳解Java如何實現(xiàn)加密或者解密PDF文檔

    詳解Java如何實現(xiàn)加密或者解密PDF文檔

    PDF文檔加密是一種用于保護文件內(nèi)容的功能。這篇文章主要介紹了Java實現(xiàn)加密或者解密PDF文檔的方法,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03
  • Java常用字符串方法小結

    Java常用字符串方法小結

    字符串變量是Java與C語言的一大不同之處。Java之中的 String 類和 Stringbuffer 類提供了大量的對字符串操作的方法。String 類適合處理較小的字符串,而Stringbuffer類適合處理大量字符串
    2017-04-04
  • Java 單鏈表數(shù)據(jù)結構的增刪改查教程

    Java 單鏈表數(shù)據(jù)結構的增刪改查教程

    這篇文章主要介紹了Java 單鏈表數(shù)據(jù)結構的增刪改查教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 聊聊java 過濾器、監(jiān)聽器、攔截器的區(qū)別(終結篇)

    聊聊java 過濾器、監(jiān)聽器、攔截器的區(qū)別(終結篇)

    這篇文章主要介紹了聊聊java 過濾器、監(jiān)聽器、攔截器的區(qū)別(終結篇),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • mybatisplus報Invalid bound statement (not found)錯誤的解決方法

    mybatisplus報Invalid bound statement (not found)錯誤的解決方法

    搭建項目時使用了mybatisplus,項目能夠正常啟動,但在調(diào)用mapper方法查詢數(shù)據(jù)庫時報Invalid bound statement (not found)錯誤。本文給大家分享解決方案,感興趣的朋友跟隨小編一起看看吧
    2020-08-08
  • Idea中導入新模塊無法被識別的問題

    Idea中導入新模塊無法被識別的問題

    這篇文章主要介紹了Idea中導入新模塊無法被識別的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java 中HashCode作用_動力節(jié)點Java學院整理

    Java 中HashCode作用_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java 中HashCode作用以及hashcode對于一個對象的重要性,對java中hashcode的作用相關知識感興趣的朋友一起學習吧
    2017-05-05
  • springboot集成elasticsearch7的圖文方法

    springboot集成elasticsearch7的圖文方法

    本文記錄springboot集成elasticsearch7的方法,本文通過圖文實例代碼相結合給大家介紹的非常詳細,需要的朋友參考下吧
    2021-05-05
  • springboot項目中jackson-序列化-處理 NULL教程

    springboot項目中jackson-序列化-處理 NULL教程

    這篇文章主要介紹了springboot項目中jackson-序列化-處理 NULL教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • SpringBoot 跨域問題的解決方案

    SpringBoot 跨域問題的解決方案

    這篇文章主要介紹了SpringBoot 跨域問題的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06

最新評論