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

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

 更新時間:2020年12月18日 16:48:56   作者:honvin_  
這篇文章主要介紹了Mybatis-Plus自動填充更新操作相關(guān)字段的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

場景介紹

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

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

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

自動填充處理器

需要實(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容器才會生效

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)字段的自動填充策略

在@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)建時間")
  @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;
}

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

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

相關(guān)文章

  • SpringBoot3實(shí)現(xiàn)優(yōu)雅停機(jī)的完整流程

    SpringBoot3實(shí)現(xiàn)優(yōu)雅停機(jī)的完整流程

    在現(xiàn)代微服務(wù)架構(gòu)中,優(yōu)雅停機(jī)(Graceful Shutdown)是一項重要功能,可以確保服務(wù)在關(guān)閉時處理完所有當(dāng)前請求,避免突然終止連接或丟失數(shù)據(jù),Spring Boot 3 提供了對優(yōu)雅停機(jī)的內(nèi)置支持,本文給大家介紹了SpringBoot3怎樣優(yōu)雅停機(jī),需要的朋友可以參考下
    2024-10-10
  • 基于自定義BufferedReader中的read和readLine方法

    基于自定義BufferedReader中的read和readLine方法

    下面小編就為大家分享一篇基于自定義BufferedReader中的read和readLine方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Springboot 整合 Dubbo/ZooKeeper 實(shí)現(xiàn) SOA 案例解析

    Springboot 整合 Dubbo/ZooKeeper 實(shí)現(xiàn) SOA 案例解析

    這篇文章主要介紹了Springboot 整合 Dubbo/ZooKeeper 詳解 SOA 案例,需要的朋友可以參考下
    2017-11-11
  • Java泛型機(jī)制的程序演示詳解

    Java泛型機(jī)制的程序演示詳解

    這篇文章主要為大家詳細(xì)介紹了Java泛型機(jī)制的程序演示,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java多線程中關(guān)于join方法的使用實(shí)例解析

    Java多線程中關(guān)于join方法的使用實(shí)例解析

    本文通過實(shí)例代碼給大家實(shí)例介紹了Java多線程中關(guān)于join方法的使用,非常不錯,具有參考借鑒價值,需要的朋友參考下
    2017-01-01
  • SpringBoot使用攔截器Interceptor實(shí)現(xiàn)統(tǒng)一角色權(quán)限校驗

    SpringBoot使用攔截器Interceptor實(shí)現(xiàn)統(tǒng)一角色權(quán)限校驗

    角色權(quán)限校驗,是保證接口安全必備的能力:有權(quán)限才可以操作,所以,一般對于這種通用邏輯,推薦不與主業(yè)務(wù)邏輯耦合,那么怎么來解耦,那么本文小編就給大家詳細(xì)講解如何使用攔截器Interceptor實(shí)現(xiàn)統(tǒng)一角色權(quán)限校驗,需要的朋友可以參考下
    2023-07-07
  • Maven項目在new module后,pom文件顯示為Ignored pom.xml問題

    Maven項目在new module后,pom文件顯示為Ignored pom.xml問題

    在Maven項目中,若創(chuàng)建過同名module后刪除,再次創(chuàng)建時可能導(dǎo)致pom.xml文件被IDEA忽略,原因是IDEA保留了之前module的痕跡,導(dǎo)致重建時將其視為已刪除的module,解決方法是進(jìn)入IDEA設(shè)置,找到Maven的Ignored Files設(shè)置
    2024-09-09
  • java實(shí)現(xiàn)根據(jù)ip地址獲取地理位置的代碼分享

    java實(shí)現(xiàn)根據(jù)ip地址獲取地理位置的代碼分享

    這篇文章主要介紹了java實(shí)現(xiàn)根據(jù)ip地址獲取地理位置的代碼分享,本文中使用的是QQ在線接口,也可以使用新浪、淘寶等提供的在線接口,需要的朋友可以參考下
    2014-08-08
  • Java使用POI解析帶圖片的excel文件(簡潔好用!)

    Java使用POI解析帶圖片的excel文件(簡潔好用!)

    這篇文章主要給大家介紹了關(guān)于Java如何使用POI解析帶圖片的excel文件的相關(guān)資料,最近項目需要讀取excel中的信息,帶圖片,所以這里給大家總結(jié)下,需要的朋友可以參考下
    2023-08-08
  • Spring中的@ControllerAdvice三種用法詳解

    Spring中的@ControllerAdvice三種用法詳解

    這篇文章主要介紹了Spring中的@ControllerAdvice三種用法詳解,加了@ControllerAdvice的類為那些聲明了(@ExceptionHandler、@InitBinder或@ModelAttribute注解修飾的)方法的類而提供的<BR>專業(yè)化的@Component,以供多個Controller類所共享,需要的朋友可以參考下
    2024-01-01

最新評論

勃利县| 马龙县| 南皮县| 郧西县| 舒兰市| 青铜峡市| 滁州市| 宜兰市| 金阳县| 木兰县| 札达县| 池州市| 安新县| 莲花县| 梁河县| 平湖市| 兴山县| 聂荣县| 九龙城区| 宁乡县| 武山县| 梅州市| 高平市| 宣汉县| 黎平县| 夏邑县| 镇雄县| 喀喇沁旗| 德化县| 鸡东县| 平潭县| 邯郸县| 华坪县| 美姑县| 白玉县| 昆山市| 盖州市| 靖江市| 雷州市| 五河县| 沧州市|