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

spring中Mapstruct屬性映射的實(shí)現(xiàn)

 更新時(shí)間:2024年12月06日 11:36:29   作者:七禾頁(yè)話  
本文主要介紹了spring中Mapstruct屬性映射的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

整合 Mapstruct : 簡(jiǎn)化屬性映射

解決問(wèn)題:當(dāng)一個(gè)對(duì)象屬性過(guò)多時(shí),DO轉(zhuǎn)VO需要寫(xiě)的字段太多了

1. 什么是 MapStruct?

MapStruct 是一個(gè)用于簡(jiǎn)化 Java Bean 映射代碼的代碼生成器。它可以自動(dòng)生成在不同 Java 對(duì)象之間進(jìn)行映射的代碼,而無(wú)需手動(dòng)編寫(xiě)復(fù)雜的轉(zhuǎn)換邏輯。MapStruct 使得在 Java 應(yīng)用程序中進(jìn)行對(duì)象映射變得更加簡(jiǎn)單、高效、可維護(hù)。

2. 為什么要使用 MapStruct?

  • 簡(jiǎn)化映射過(guò)程: 傳統(tǒng)的 Java 對(duì)象映射需要編寫(xiě)大量的重復(fù)、繁瑣的代碼。MapStruct 自動(dòng)生成這些映射代碼,節(jié)省了開(kāi)發(fā)人員的時(shí)間和精力。
  • 類(lèi)型安全性: MapStruct 是基于編譯時(shí)的代碼生成,因此提供了類(lèi)型安全性。在編譯時(shí),它會(huì)檢查源對(duì)象和目標(biāo)對(duì)象的類(lèi)型,避免了運(yùn)行時(shí)的類(lèi)型錯(cuò)誤。
  • 高性能: 由于 MapStruct 生成的代碼是高度優(yōu)化的,所以性能非常好。相比手動(dòng)編寫(xiě)的映射代碼,MapStruct 生成的代碼更加高效。
  • 可維護(hù)性: 當(dāng)數(shù)據(jù)模型發(fā)生變化時(shí),手動(dòng)更新映射代碼可能會(huì)非常麻煩。MapStruct 能夠根據(jù)最新的數(shù)據(jù)模型自動(dòng)生成新的映射代碼,確保映射邏輯與數(shù)據(jù)模型保持同步。
  • 靈活性: MapStruct 提供了豐富的配置選項(xiàng)和擴(kuò)展點(diǎn),可以滿足各種復(fù)雜映射場(chǎng)景的需求。你可以定制生成的代碼,以適應(yīng)特定的業(yè)務(wù)邏輯。

3. 添加依賴(lài)

多模塊中,在父工程模塊的pom.xm下

    <!-- 版本號(hào)統(tǒng)一管理 -->
    <properties>
        // 省略...
        <mapstruct.version>1.5.5.Final</mapstruct.version>
    </properties>
    
    <!-- 統(tǒng)一依賴(lài)管理 -->
    <dependencyManagement>
        <dependencies>
			// 省略...

            <!-- Mapstruct 屬性映射 -->
            <dependency>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct</artifactId>
                <version>${mapstruct.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>
    
       <build>
        <!-- 統(tǒng)一插件管理 -->
        <pluginManagement>
            <plugins>
				// 省略...

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${java.version}</source> <!-- 根據(jù)你的 JDK 版本進(jìn)行調(diào)整 -->
                        <target>${java.version}</target> <!-- 根據(jù)你的 JDK 版本進(jìn)行調(diào)整 -->
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${lombok.version}</version>
                            </path>
                            <path>
                                <groupId>org.mapstruct</groupId>
                                <artifactId>mapstruct-processor</artifactId>
                                <version>${mapstruct.version}</version> <!-- 使用時(shí)請(qǐng)檢查最新版本 -->
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

在需要使用的模塊中添加

		<dependency>
			<groupId>org.mapstruct</groupId>
			<artifactId>mapstruct</artifactId>
		</dependency>

在入口模塊添加編譯插件:

    <build>
        <plugins>
			// 省略...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

4. IDEA 配置 Mapstruct

添加好了 MapStruct 依賴(lài)后,已經(jīng)可以確保項(xiàng)目中能夠正常使用 MapStruct 了。但是,為了在開(kāi)發(fā)過(guò)程中獲得更好的體驗(yàn),我們可以為 IDE 進(jìn)行一些配置,從而支持 MapStruct 的自動(dòng)代碼生成、代碼提示等功能。

4.1 啟用注解處理器

  • 打開(kāi) IntelliJ IDEA,并加載你的項(xiàng)目。
  • 打開(kāi) File -> Settings (或 Preferences)
  • 在左側(cè)導(dǎo)航欄中選擇 Build, Execution, Deployment -> Compiler -> Annotation Processors。
  • 勾選 Enable annotation processing
  • 在 Store generated sources relative to 下拉列表中選擇 Module content root。
  • 點(diǎn)擊右下角 Apply 按鈕應(yīng)用設(shè)置,然后,點(diǎn)擊 ok 按鈕關(guān)閉彈框。

在這里插入圖片描述

4.2添加MapStruct插件

雖然這不是必需的,但 MapStruct 插件可以為你提供一些很有用的功能,例如代碼提示和自動(dòng)補(bǔ)全。

  • 打開(kāi) File -> Settings (或 Preferences)
  • 在左側(cè)選擇 Plugins。
  • 在市場(chǎng) (Marketplace) 中搜索 “MapStruct” 并安裝它。
  • 重啟 IntelliJ IDEA。

5. 添加 convert 接口

新建一個(gè) /convert 包,并創(chuàng)建一個(gè) BlogSettingsConvert 轉(zhuǎn)換接口,代碼如下:

@Mapper
public interface BlogSettingsConvert {
    /**
     * 初始化 convert 實(shí)例
     */
    BlogSettingsConvert INSTANCE = Mappers.getMapper(BlogSettingsConvert.class);

    /**
     * 將 VO 轉(zhuǎn)化為 DO
     * @param bean
     * @return
     */
    BlogSettingsDO convertVO2DO(UpdateBlogSettingsReqVO bean);

}

注意,接口類(lèi)上添加的 @Mapper 注解,導(dǎo)入自 org.mapstruct.Mapper, 別搞錯(cuò)了哦。

6. 使用 Mapstruct 來(lái)轉(zhuǎn)換

@Service
public class AdminBlogSettingsServiceImpl extends ServiceImpl<BlogSettingsMapper, BlogSettingsDO> implements AdminBlogSettingsService {

    @Override
    public Response updateBlogSettings(UpdateBlogSettingsReqVO updateBlogSettingsReqVO) {
        // VO 轉(zhuǎn) DO
        BlogSettingsDO blogSettingsDO = BlogSettingsConvert.INSTANCE.convertVO2DO(updateBlogSettingsReqVO);
        blogSettingsDO.setId(1L);

        // 保存或更新(當(dāng)數(shù)據(jù)庫(kù)中存在 ID 為 1 的記錄時(shí),則執(zhí)行更新操作,否則執(zhí)行插入操作)
        saveOrUpdate(blogSettingsDO);
        return Response.success();
    }
}
ingsDO.setId(1L);

        // 保存或更新(當(dāng)數(shù)據(jù)庫(kù)中存在 ID 為 1 的記錄時(shí),則執(zhí)行更新操作,否則執(zhí)行插入操作)
        saveOrUpdate(blogSettingsDO);
        return Response.success();
    }
}

將 VO 類(lèi)轉(zhuǎn)換為了 DO 類(lèi),僅需要對(duì) VO 中沒(méi)有值的字段,如 ID 字段設(shè)置一下值即可

到此這篇關(guān)于spring中Mapstruct屬性映射的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)spring Mapstruct屬性映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解spring cloud hystrix請(qǐng)求緩存(request cache)

    詳解spring cloud hystrix請(qǐng)求緩存(request cache)

    這篇文章主要介紹了詳解spring cloud hystrix請(qǐng)求緩存(request cache),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • springboot封裝響應(yīng)實(shí)體的實(shí)例代碼

    springboot封裝響應(yīng)實(shí)體的實(shí)例代碼

    這篇文章主要介紹了springboot封裝響應(yīng)實(shí)體,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • SpringBoot?配置多個(gè)JdbcTemplate的實(shí)現(xiàn)步驟

    SpringBoot?配置多個(gè)JdbcTemplate的實(shí)現(xiàn)步驟

    本文介紹了在SpringBoot中配置多個(gè)JdbcTemplate的方法,包括創(chuàng)建項(xiàng)目、添加依賴(lài)、配置數(shù)據(jù)源和多個(gè)JdbcTemplate的使用,感興趣的可以了解一下
    2024-11-11
  • Java多線程事務(wù)管理的實(shí)現(xiàn)

    Java多線程事務(wù)管理的實(shí)現(xiàn)

    本文主要介紹了Java多線程事務(wù)管理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 利用Jacob將Excel轉(zhuǎn)換PDF的問(wèn)題匯總

    利用Jacob將Excel轉(zhuǎn)換PDF的問(wèn)題匯總

    項(xiàng)目中經(jīng)常會(huì)遇到將excel轉(zhuǎn)換成PDF的需求,下面這篇文章主要給大家介紹了關(guān)于如何利用Jacob將Excel轉(zhuǎn)換PDF問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Spring MVC文件上傳大小和類(lèi)型限制以及超大文件上傳bug問(wèn)題

    Spring MVC文件上傳大小和類(lèi)型限制以及超大文件上傳bug問(wèn)題

    這篇文章主要介紹了Spring MVC文件上傳大小和類(lèi)型限制以及超大文件上傳bug問(wèn)題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10
  • Mybatis #foreach中相同的變量名導(dǎo)致值覆蓋的問(wèn)題解決

    Mybatis #foreach中相同的變量名導(dǎo)致值覆蓋的問(wèn)題解決

    本文主要介紹了Mybatis #foreach中相同的變量名導(dǎo)致值覆蓋的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java單機(jī)滑動(dòng)窗口限流器的實(shí)現(xiàn)

    java單機(jī)滑動(dòng)窗口限流器的實(shí)現(xiàn)

    本文主要介紹了java單機(jī)滑動(dòng)窗口限流器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • 前端和后端時(shí)間不一致問(wèn)題解決的實(shí)踐指南

    前端和后端時(shí)間不一致問(wèn)題解決的實(shí)踐指南

    這篇文章主要給大家介紹了關(guān)于前端和后端時(shí)間不一致問(wèn)題解決的實(shí)踐指南,在SpringBoot項(xiàng)目中,可以通過(guò)設(shè)置application.yml文件中的屬性來(lái)統(tǒng)一時(shí)間格式和時(shí)區(qū),從而確保序列化和反序列化過(guò)程中的時(shí)間和時(shí)區(qū)一致性,需要的朋友可以參考下
    2025-01-01
  • 使用Spring事件監(jiān)聽(tīng)機(jī)制實(shí)現(xiàn)跨模塊調(diào)用的步驟詳解

    使用Spring事件監(jiān)聽(tīng)機(jī)制實(shí)現(xiàn)跨模塊調(diào)用的步驟詳解

    Spring 事件監(jiān)聽(tīng)機(jī)制是 Spring 框架中用于在應(yīng)用程序的不同組件之間進(jìn)行通信的一種機(jī)制,Spring 事件監(jiān)聽(tīng)機(jī)制基于觀察者設(shè)計(jì)模式,使得應(yīng)用程序的各個(gè)部分可以解耦,提高模塊化和可維護(hù)性,本文給大家介紹了使用Spring事件監(jiān)聽(tīng)機(jī)制實(shí)現(xiàn)跨模塊調(diào)用,需要的朋友可以參考下
    2024-06-06

最新評(píng)論

平舆县| 上蔡县| 吉木萨尔县| 华蓥市| 大厂| 屏山县| 榕江县| 大丰市| 扎鲁特旗| 吉安市| 宜兰市| 林西县| 凤山市| 同江市| 江陵县| 兴城市| 和硕县| 大竹县| 顺昌县| 灵璧县| 乐至县| 饶平县| 洪湖市| 阜平县| 太和县| 青神县| 满洲里市| 柏乡县| 福清市| 黄石市| 井冈山市| 新昌县| 沙洋县| 临海市| 康平县| 泰安市| 横山县| 巴彦淖尔市| 镇巴县| 兴安盟| 康马县|