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

關(guān)于MapStruct的使用教程

 更新時(shí)間:2025年02月08日 15:28:09   作者:wujiada001  
MapStruct 是一個(gè)用于 Java Bean 映射的代碼生成器,通過(guò)注解處理器自動(dòng)生成映射代碼,以下是 MapStruct 的基本使用方法:添加依賴、定義映射接口、使用映射方法、定義自定義映射方法、處理復(fù)雜映射、集成 Spring 等

MapStruct的使用

MapStruct 是一個(gè)代碼生成器,它使用注解處理器來(lái)實(shí)現(xiàn) Java bean 之間的映射。

MapStruct 通過(guò)在編譯時(shí)自動(dòng)生成映射代碼,減少了手動(dòng)編寫映射代碼的工作量,并幫助保持代碼的一致性和準(zhǔn)確性。

以下是 MapStruct 的基本使用方法:

1. 添加依賴

首先,你需要在項(xiàng)目的構(gòu)建配置中添加 MapStruct 的依賴。對(duì)于 Maven 和 Gradle,添加如下依賴:

  • Maven:
<dependencies>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>1.4.2.Final</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>1.4.2.Final</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>
  • Gradle:
dependencies {
    implementation 'org.mapstruct:mapstruct:1.4.2.Final'
    annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
}

2. 定義映射接口

創(chuàng)建一個(gè)接口,并使用 @Mapper 注解標(biāo)注,這個(gè)接口將定義源對(duì)象和目標(biāo)對(duì)象之間的映射規(guī)則。

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper
public interface MyMapper {
    MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);

    // 定義從源對(duì)象到目標(biāo)對(duì)象的映射方法
    TargetObject map(SourceObject source);
}

3. 使用映射方法

在業(yè)務(wù)邏輯中,你可以使用定義的映射接口來(lái)轉(zhuǎn)換對(duì)象。

public class MyService {
    public TargetObject convert(SourceObject source) {
        return MyMapper.INSTANCE.map(source);
    }
}

4. 定義自定義映射方法

如果需要自定義映射邏輯,可以定義一個(gè)帶有 @Mapping 注解的方法,并在其中指定映射規(guī)則。

@Mapper
public interface MyMapper {
    @Mapping(target = "targetProperty", source = "sourceProperty")
    @Mapping(target = "targetProperty2", expression = "java(String.valueOf(source.getSourceProperty2()))")
    TargetObject map(SourceObject source);
}

5. 處理復(fù)雜映射

在這個(gè)例子中,@Mapping注解用于指定源對(duì)象和目標(biāo)對(duì)象之間的屬性映射關(guān)系。source屬性指定源對(duì)象的屬性名,target屬性指定目標(biāo)對(duì)象的屬性名。

@Mapper
public interface MyMapper {
    @Mapping(target = "dateOfBirth", source = "birthYear", qualifiedByName = "yearToCalendar")
    TargetObject map(SourceObject source);

    @Named("yearToCalendar")
    default Date yearToCalendar(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, Calendar.JANUARY, 1);
        return calendar.getTime();
    }
}

對(duì)于更復(fù)雜的映射場(chǎng)景,比如需要轉(zhuǎn)換數(shù)據(jù)類型或者調(diào)用方法,MapStruct 也提供了相應(yīng)的注解來(lái)支持。

  1. 自定義映射:可以使用@Mapping注解的expressionqualifiedByName屬性來(lái)自定義映射邏輯。
  2. 集合映射:可以使用@IterableMapping@MapMapping注解來(lái)處理集合類型的映射。
  3. 枚舉映射:可以直接映射枚舉類型,或者通過(guò)@Mapping注解的enumNamed屬性來(lái)指定枚舉的映射規(guī)則。
  4. 使用構(gòu)造函數(shù)映射:如果目標(biāo)類有構(gòu)造函數(shù),可以使用@Mapping注解的constructor屬性來(lái)指定使用構(gòu)造函數(shù)進(jìn)行映射。
  5. 嵌套屬性映射:可以映射嵌套的對(duì)象屬性。
  6. 反向映射:可以定義一個(gè)反向映射方法,并使用@Mapping注解的inverse屬性來(lái)引用正向映射方法。
  7. 使用裝飾器增強(qiáng)Mapper:可以使用@DecoratedWith注解來(lái)裝飾Mapper接口,以實(shí)現(xiàn)更復(fù)雜的映射邏輯。
  8. 映射繼承:可以通過(guò)繼承來(lái)共享映射配置。
  9. 使用@BeforeMapping和@AfterMapping進(jìn)行預(yù)處理和后處理:可以在映射方法執(zhí)行前后執(zhí)行自定義的邏輯。
  10. 使用@Context傳遞上下文參數(shù):可以在映射方法中傳遞額外的上下文參數(shù)。

6. 集成 Spring

MapStruct還可以與Spring框架集成,允許在映射器中注入Spring管理的bean。

這需要在Mapper接口上使用@Mapper(componentModel = "spring")注解來(lái)指定Spring作為組件模型。然后,可以使用@Autowired注解來(lái)注入Spring管理的bean。

@Mapper(componentModel = "spring")
public interface MyMapper {
    TargetObject map(SourceObject source);
}

這樣,MapStruct 映射器就可以作為 Spring Bean 進(jìn)行自動(dòng)裝配。

通過(guò)使用 MapStruct,你可以減少手動(dòng)編寫的樣板代碼,提高開發(fā)效率,并減少因手動(dòng)映射而產(chǎn)生的錯(cuò)誤。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Idea安裝及涉及springboot詳細(xì)配置的圖文教程

    Idea安裝及涉及springboot詳細(xì)配置的圖文教程

    這篇文章主要介紹了Idea安裝及涉及springboot詳細(xì)配置,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java數(shù)組的聲明與創(chuàng)建示例詳解

    Java數(shù)組的聲明與創(chuàng)建示例詳解

    這篇文章主要介紹了Java數(shù)組的聲明與創(chuàng)建示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解Spring配置事務(wù)的五種方式

    詳解Spring配置事務(wù)的五種方式

    這篇文章主要為大家詳細(xì)介紹了Spring配置事務(wù)的五種方式,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之工作管理系統(tǒng)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之工作管理系統(tǒng)的實(shí)現(xiàn)

    這是一個(gè)使用了java+SSM+Jsp+Mysql開發(fā)的工作干活管理系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有管理系統(tǒng)該有的所有功能,感興趣的朋友快來(lái)看看吧
    2022-02-02
  • SSM框架搭建圖文教程(推薦)

    SSM框架搭建圖文教程(推薦)

    下面小編就為大家?guī)?lái)一篇SSM框架搭建圖文教程(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 一文弄懂fastjson

    一文弄懂fastjson

    fastjson?是一個(gè)java語(yǔ)言編寫的高性能且功能完善的JSON庫(kù),本文主要介紹了fastjson的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-05-05
  • Java獲取時(shí)間差(天數(shù)差,小時(shí)差,分鐘差)代碼示例

    Java獲取時(shí)間差(天數(shù)差,小時(shí)差,分鐘差)代碼示例

    這篇文章主要介紹了Java獲取時(shí)間差(天數(shù)差,小時(shí)差,分鐘差)代碼示例,使用SimpleDateFormat來(lái)實(shí)現(xiàn)的相關(guān)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Spring中最常用的注解之一@Autowired詳解

    Spring中最常用的注解之一@Autowired詳解

    本文講解了Spring中最常用的注解之一@Autowired, 平時(shí)我們可能都是使用屬性注入的,但是后續(xù)建議大家慢慢改變習(xí)慣,使用構(gòu)造器注入。同時(shí)也講解了這個(gè)注解背后的實(shí)現(xiàn)原理,需要的朋友可以參考下
    2023-01-01
  • SpringBoot緩存預(yù)熱實(shí)戰(zhàn)

    SpringBoot緩存預(yù)熱實(shí)戰(zhàn)

    緩存預(yù)熱是一種常見的優(yōu)化策略,旨在提高系統(tǒng)的響應(yīng)速度和性能,本文主要介紹了SpringBoot緩存預(yù)熱實(shí)戰(zhàn)指南,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-01-01
  • java 單例模式(懶漢式與餓漢式)

    java 單例模式(懶漢式與餓漢式)

    這篇文章主要介紹了java 單例模式的相關(guān)資料,這里對(duì)懶漢式與餓漢式都做了實(shí)例介紹,需要的朋友可以參考下
    2017-07-07

最新評(píng)論

灌南县| 繁峙县| 泽州县| 兰溪市| 蓬莱市| 基隆市| 军事| 建瓯市| 安溪县| 文水县| 抚顺县| 乐都县| 宣武区| 中卫市| 陆河县| 天长市| 西藏| 封开县| 吴川市| 海城市| 新平| 贺州市| 朝阳县| 九龙县| 通化县| 定边县| 丽水市| 金川县| 九台市| 漯河市| 公主岭市| 仁布县| 岑溪市| 武威市| 普陀区| 保山市| 襄垣县| 上蔡县| 堆龙德庆县| 西青区| 珲春市|