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

MyBatis-Plus自動填充字段的詳細教程

 更新時間:2024年08月16日 08:40:29   作者:IT小輝同學  
今天編寫一個詳細的教程來介紹如何在?Spring?Boot?項目中使用?MyBatis-Plus?實現(xiàn)自動填充時間字段(如創(chuàng)建時間?createTime?和更新時間?updateTime),可以分為以下幾個部分,這個教程將涵蓋從項目配置到自動填充的完整過程,需要的朋友可以參考下

1. 項目環(huán)境配置

首先,需要確保項目中已經(jīng)集成了 Spring Boot 和 MyBatis-Plus。下面是一些基本的配置步驟:

1.1 引入必要的依賴

在 pom.xml 中添加 MyBatis-Plus 的依賴:

<dependencies>
    <!-- MyBatis-Plus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>

    <!-- 其他必要依賴 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- MySQL 驅(qū)動 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

1.2 配置數(shù)據(jù)源

在 application.yml 或 application.properties 文件中配置數(shù)據(jù)庫連接:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis-plus:
  mapper-locations: classpath:/mapper/*.xml
  type-aliases-package: com.example.entity
  global-config:
    db-config:
      id-type: auto

2. 創(chuàng)建基礎(chǔ)實體類

為數(shù)據(jù)庫中的表創(chuàng)建一個基礎(chǔ)實體類 BaseEntity,在該類中定義創(chuàng)建時間和更新時間字段,并使用 MyBatis-Plus 的注解配置自動填充。

package com.example.utils;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Data
public class BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 搜索值(暫時忽略)
     */
    @JsonIgnore
    @TableField(exist = false)
    private String searchValue;

    /**
     * 創(chuàng)建者
     */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 創(chuàng)建時間
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新者
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**
     * 更新時間
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 請求參數(shù)(暫時忽略)
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private Map<String, Object> params = new HashMap<>();

}

3. 實現(xiàn) MetaObjectHandler 接口

為了使 BaseEntity 中的自動填充注解生效,我們需要實現(xiàn) MetaObjectHandler 接口,并將其配置為 Spring 的一個 Bean。

3.1 創(chuàng)建 MyMetaObjectHandler 類

package com.example.config;

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) {
        // 填充創(chuàng)建時間和更新時間
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
        // 可以根據(jù)業(yè)務(wù)需求獲取當前用戶,填充創(chuàng)建者和更新者
        this.strictInsertFill(metaObject, "createBy", String.class, getCurrentUser());
        this.strictInsertFill(metaObject, "updateBy", String.class, getCurrentUser());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        // 更新時只填充更新時間和更新者
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
        this.strictUpdateFill(metaObject, "updateBy", String.class, getCurrentUser());
    }

    // 示例方法:獲取當前用戶信息
    private String getCurrentUser() {
        // 這里可以集成 Spring Security 或其他上下文獲取實際的當前用戶
        return "system"; // 這是一個占位符,實際應用中會替換為真實用戶信息
    }
}

3.2 配置生效

通過在 MyMetaObjectHandler 類上使用 @Component 注解,Spring 會自動管理這個類,并在實體插入和更新時調(diào)用它來填充字段。

4. 實體類繼承 BaseEntity

現(xiàn)在,你的具體實體類可以繼承 BaseEntity,從而自動獲得 createTimeupdateTime 字段的自動填充功能。

package com.example.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.example.utils.BaseEntity;
import lombok.Data;

@Data
@TableName("your_table")
public class YourEntity extends BaseEntity {
    // 其他字段
    private String name;
    private Integer age;
}

5. 處理數(shù)據(jù)插入與更新

在 Service 或 Mapper 層,執(zhí)行插入或更新操作時,createTime 和 updateTime 字段會自動填充。

5.1 Service 層示例

@Service
public class YourEntityService {

    @Autowired
    private YourEntityMapper yourEntityMapper;

    public void saveEntity(YourEntity entity) {
        yourEntityMapper.insert(entity);
    }

    public void updateEntity(YourEntity entity) {
        yourEntityMapper.updateById(entity);
    }
}

6. 驗證自動填充功能

通過簡單的單元測試或集成測試,驗證 createTimeupdateTime 字段在插入和更新時是否正確自動填充。

7. 其他注意事項

  • 字段類型: 確保數(shù)據(jù)庫中的 createTimeupdateTime 字段類型與 Java 實體類中的類型相匹配(通常是 DATETIME 類型)。
  • 時間格式: 如果需要統(tǒng)一時間格式,可以在配置文件中設(shè)置 Spring Boot 的全局時間格式,或使用 @JsonFormat 注解指定序列化時的格式。
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

總結(jié)

通過本文的教程,你可以輕松地在 Spring Boot 項目中使用 MyBatis-Plus 自動填充創(chuàng)建時間和更新時間字段。該方法充分利用了 MyBatis-Plus 的自動填充機制,并結(jié)合 Spring Boot 的優(yōu)勢,使開發(fā)過程更加簡潔高效。如果遇到問題,務(wù)必檢查 MetaObjectHandler 是否正確注冊,字段類型是否匹配,以及數(shù)據(jù)庫配置是否正確。

以上就是MyBatis-Plus自動填充字段的詳細教程的詳細內(nèi)容,更多關(guān)于MyBatis-Plus自動填充字段的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MyBatis-Plus執(zhí)行SQL分析打印過程

    MyBatis-Plus執(zhí)行SQL分析打印過程

    這篇文章主要介紹了MyBatis-Plus執(zhí)行SQL分析打印過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Maven引入與打包指定目錄下的第三方sdk的幾種方法

    Maven引入與打包指定目錄下的第三方sdk的幾種方法

    本文主要介紹了Maven引入與打包指定目錄下的第三方sdk的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-09-09
  • Java實例域初始化方法及順序

    Java實例域初始化方法及順序

    這篇文章主要介紹了Java實例域初始化方法及順序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • JAVA 內(nèi)存溢出案例匯總

    JAVA 內(nèi)存溢出案例匯總

    這篇文章主要介紹了JAVA 內(nèi)存溢出案例的匯總,文中講解非常細致,幫助各位工作學習時避免內(nèi)存溢出,感興趣的朋友可以了解下
    2020-07-07
  • java8新特性之接口默認方法示例詳解

    java8新特性之接口默認方法示例詳解

    這篇文章主要給大家介紹了關(guān)于java8新特性之接口默認方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java8具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-08-08
  • spring cloud oauth2 feign 遇到的坑及解決

    spring cloud oauth2 feign 遇到的坑及解決

    這篇文章主要介紹了spring cloud oauth2 feign 遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Android 判斷真機和模擬器的方法

    Android 判斷真機和模擬器的方法

    這篇文章主要介紹了 Android 判斷真機和模擬器的方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 攔截JSP頁面,校驗是否已登錄詳解及實現(xiàn)代碼

    攔截JSP頁面,校驗是否已登錄詳解及實現(xiàn)代碼

    這篇文章主要介紹了攔截JSP頁面,校驗是否已登錄詳解及實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • SpringCloud Zuul過濾器和谷歌Gauva實現(xiàn)限流

    SpringCloud Zuul過濾器和谷歌Gauva實現(xiàn)限流

    這篇文章主要介紹了SpringCloud Zuul過濾器和谷歌Gauva實現(xiàn)限流,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • JDBC的基本操作與Statement和PreparedStateMent使用區(qū)別分析

    JDBC的基本操作與Statement和PreparedStateMent使用區(qū)別分析

    這篇文章主要介紹了JDBC的基本操作與Statement和PreparedStateMent使用區(qū)別,Java Database Connectivity,它是代表一組獨立于任何數(shù)據(jù)庫管理系統(tǒng)(DBMS)的API,聲明在java.sql與javax.sql包中,是SUN(現(xiàn)在Oracle)提供的一組接口規(guī)范
    2023-04-04

最新評論

尉氏县| 色达县| 阿克苏市| 赤峰市| 镇康县| 嘉荫县| 芒康县| 宜州市| 琼结县| 容城县| 齐齐哈尔市| 呈贡县| 崇信县| 红河县| 榕江县| 台前县| 寿宁县| 邢台市| 得荣县| 信丰县| 准格尔旗| 西城区| 涿州市| 若羌县| 兴山县| 都昌县| 玛曲县| 蒲江县| 阿拉善右旗| 白山市| 扶风县| 南昌县| 德庆县| 乌鲁木齐县| 浠水县| 灵台县| 抚顺县| 电白县| 壤塘县| 维西| 中阳县|