精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MapStruct教程-映射器之間的嵌套調用

開發 前端
我們定義一個Article類和Person類,Person類包含兩個簡單字段,Article類包含兩個簡單字段,引用一個Person類字段,然后再定義對應的DTO類。

MapStruct是一個幫助我們在處理Java Bean映射時,盡量減少樣板代碼的效率工具,只需要定義接口,他會自動生成映射邏輯。之前介紹的目標都是需要映射的對象,本文我們一起看看如何構建復雜的映射器。

一、準備對象

我們定義一個Article類和Person類,Person類包含兩個簡單字段,Article類包含兩個簡單字段,引用一個Person類字段,然后再定義對應的DTO類。

為了驗證效果,Person類和對應的DTO類字段名不同。

以下是源類:

@Getter
@Setter
public class Article {
    private int id;
    private String name;
    private Person author;
}

@Getter
@Setter
public class Person {
    private String id;
    private String name;
}

以下是目標類:

@Getter
@Setter
public class ArticleDTO {
    private int id;
    private String name;
    private PersonDTO author;
}

@Getter
@Setter
public class PersonDTO {
    private String personId;
    private String personName;
}

基礎類準備好了,接下來開始定義映射器。

二、將嵌套映射器定義為方法

讓我們從定義一個簡單的映射器開始,操作Article類:

@Mapper
public interface ArticleMapper {

    ArticleMapper INSTANCE = Mappers.getMapper(ArticleMapper.class);

    ArticleDTO articleToArticleDto(Article article);
}

我們看下生成的映射代碼:

public class ArticleMapperImpl implements ArticleMapper {

    @Override
    public ArticleDTO articleToArticleDto(Article article) {
        if ( article == null ) {
            return null;
        }

        ArticleDTO articleDTO = new ArticleDTO();

        articleDTO.setId( article.getId() );
        articleDTO.setName( article.getName() );
        articleDTO.setAuthor( personToPersonDTO( article.getAuthor() ) );

        return articleDTO;
    }

    protected PersonDTO personToPersonDTO(Person person) {
        if ( person == null ) {
            return null;
        }

        PersonDTO personDTO = new PersonDTO();

        return personDTO;
    }
}

這里會自動生成Person到PersonDTO的轉換。但是,因為字段名稱不對應,無法自動映射,需要我們自己定義字段映射關系。

我們定義一個PersonMapper映射器:

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

    @Mapping(source = "id", target = "personId")
    @Mapping(source = "name", target = "personName")
    PersonDTO personToPersonDTO(Person person);
}

三、定義映射方法

映射器已經定義好了,如何在ArticleMapper中引用PersonMapper呢?有兩種方式。

(一)手動編寫映射方法

我們可以使用Mappers.getMapper()方法,在ArticleMapper中直接調用PersonMapper的映射方法:

default PersonDTO personToPersonDto(Person person) {
    return Mappers.getMapper(PersonMapper.class).personToPersonDTO(person);
}

MapStruct將自動獲取此方法并使用它來映射author字段,生成的代碼為:

@Override
public ArticleDTO articleToArticleDto(Article article) {
    if ( article == null ) {
        return null;
    }

    ArticleDTO articleDTO = new ArticleDTO();

    articleDTO.setId( article.getId() );
    articleDTO.setName( article.getName() );
    articleDTO.setAuthor( personToPersonDto( article.getAuthor() ) );

    return articleDTO;
}

上面這種是純手動的操作,有些粗糙,我們在看看MapStruct中如何更加優雅一些。

(二)優(zi)雅(dong)的映射

我們可以直接在@Mapper注解中使用uses參數指向我們想要使用的映射器,而不是定義一個新方法:

@Mapper(uses = PersonMapper.class)
public interface ArticleUsingPersonMapper {
    
    ArticleUsingPersonMapper INSTANCE = Mappers.getMapper(ArticleUsingPersonMapper.class);
    
    ArticleDTO articleToArticleDto(Article article);
}

自動生成的映射代碼為:

public class ArticleUsingPersonMapperImpl implements ArticleUsingPersonMapper {

    private final PersonMapper personMapper = PersonMapper.INSTANCE;

    @Override
    public ArticleDTO articleToArticleDto(Article article) {
        if ( article == null ) {
            return null;
        }

        ArticleDTO articleDTO = new ArticleDTO();

        articleDTO.setId( article.getId() );
        articleDTO.setName( article.getName() );
        articleDTO.setAuthor( personMapper.personToPersonDTO( article.getAuthor() ) );

        return articleDTO;
    }
}

從生成的映射代碼看到,雖然沒有指定author字段的映射,但是MapStruct會自動從PersonMapper中找到映射方法。

是不是很方便,這才是優雅的實現。

責任編輯:武曉燕 來源: 看山的小屋
相關推薦

2022-04-06 09:10:40

映射器代理類接口

2025-01-16 00:00:00

MapStruct映射

2023-01-31 15:17:44

copyMapStruct

2011-09-28 10:17:54

2025-01-13 00:00:00

MapStruct枚舉映射

2022-09-02 08:17:40

MapStruct代碼工具

2022-01-25 08:36:29

array.flat映射函數數組

2023-10-26 14:34:32

2021-10-14 18:15:38

BeanUtils對象生成器

2025-01-13 00:00:00

MapStruct繼承關系Java

2025-08-27 00:01:55

2024-04-19 08:49:50

微服務RPC事件驅動

2020-12-10 08:21:27

XML映射Mybatis

2010-03-26 15:55:47

Python腳本

2010-01-28 15:22:12

C++嵌套類

2025-01-24 00:00:00

MapStruct子類型Mapper

2013-05-14 09:28:34

網吧路由器映射端口映射

2024-10-09 12:18:38

2017-01-23 15:06:32

戴爾服務器

2009-06-02 14:46:26

Hibernate關系映射教程
點贊
收藏

51CTO技術棧公眾號

一二三四在线观看视频| av网址在线观看免费| 欧美 中文字幕| 免费亚洲一区| 亚洲色图美腿丝袜| 涩涩网站在线看| 波多野结衣在线高清| 久久影院视频免费| 成人亲热视频网站| 偷偷操不一样的久久| 色综合久久一区二区三区| 日韩欧美精品在线| 中文字幕在线导航| 国产三级伦理在线| 国产精品你懂的| 国产一区在线免费观看| 一级久久久久久久| 午夜在线视频一区二区区别| 蜜月aⅴ免费一区二区三区 | 亚洲国产精品综合| 亚洲女同志亚洲女同女播放| 奇米888四色在线精品| 欧美国产日韩一区二区| 国产一区第一页| 日韩精品社区| 欧美本精品男人aⅴ天堂| 在线免费视频a| 超碰激情在线| 夜夜夜精品看看| 伊人色综合影院| 国产在线视频福利| 91在线视频免费91| 国产传媒一区| 99久久精品无免国产免费| 视频一区国产视频| 日本欧美爱爱爱| 日本中文字幕网| 国产综合婷婷| 美女国内精品自产拍在线播放| 久久久久亚洲av无码a片| 女同另类激情重口| 精品国产乱码久久久久久闺蜜| 一区二区三区四区毛片| 78精品国产综合久久香蕉| 精品久久久久久| 毛片在线播放视频| 激情在线视频播放| 一区二区三区产品免费精品久久75| 五月天亚洲综合情| 久久经典视频| 久久免费电影网| 欧美重口乱码一区二区| 欧美日本网站| 久久网这里都是精品| 美脚丝袜一区二区三区在线观看| 天天爱天天干天天操| 99国产精品国产精品毛片| 国产麻豆日韩| 手机在线精品视频| 91免费视频网| 欧美凹凸一区二区三区视频 | 中文字幕亚洲第一| 午夜影院黄色片| 日韩不卡一区| 久久国产精品亚洲| 国产午夜小视频| 99精品久久| 国产成人亚洲综合91| 亚洲中文字幕无码爆乳av| 日本午夜一区二区| 亚洲va欧美va国产综合久久| 99精品久久久久久中文字幕| 粉嫩高潮美女一区二区三区| 国产一级精品aaaaa看| 欧美成熟毛茸茸| 国产精品伦理一区二区| 欧洲xxxxx| 91吃瓜在线观看| 岛国av一区二区| 亚洲三级视频网站| 日韩精品一区二区三区中文字幕| 欧美精品一区二| brazzers精品成人一区| 日韩欧美精品综合| 欧美激情视频在线| 中文字幕免费观看| 韩国成人福利片在线播放| 成人免费看片网站| 国产资源在线看| 亚洲精品视频免费看| 国内精品视频一区二区三区| 成人不卡视频| 精品国产一区二区三区忘忧草 | 久久99999| 欧美视频二区欧美影视| 日韩成人中文字幕| 欧美色视频一区二区三区在线观看| 亚洲天堂一区二区三区四区| 97久久精品在线| 亚洲性在线观看| 成人h动漫精品一区二区| 日本高清久久一区二区三区| 呦呦在线视频| 欧美在线观看你懂的| 亚洲精品成人无码毛片| 国产剧情一区| 欧美激情日韩图片| 又骚又黄的视频| 99久久综合精品| 中文字幕色呦呦| 日本一区免费网站| 精品sm在线观看| 在线观看黄网址| 久久精品伊人| 国产精品一区二| caopeng在线| 欧美在线观看视频一区二区| 免费无码一区二区三区| 影音先锋日韩在线| 国产成人精品最新| 亚洲日本在线播放| 亚洲综合免费观看高清完整版在线| 美女一区二区三区视频| 欧美顶级毛片在线播放| 欧美日韩国产成人在线观看| 中文字幕理论片| 91免费观看国产| www.在线观看av| 国产成人免费视频网站视频社区| 亚洲欧美日韩精品久久亚洲区| 日本免费一二三区| 国产成人精品三级| 在线精品亚洲一区二区| av有声小说一区二区三区| 亚洲第一网站免费视频| 日韩a级片在线观看 | 国产精品久久久久久久久影视| 风流老熟女一区二区三区| 亚洲日本一区二区| 欧美伦理片在线看| 精品国产一区一区二区三亚瑟 | 日韩专区第三页| 精品欧美日韩精品| 亚洲夜晚福利在线观看| 亚洲综合图片网| 99国产精品久| 欧美性大战久久久久xxx| 人妖一区二区三区| 欧美一级黑人aaaaaaa做受| 性猛交xxxx| 欧美午夜精品久久久久久浪潮| 大尺度在线观看| 亚洲国产午夜| 春色成人在线视频| av免费在线视| 亚洲精品xxxx| 99超碰在线观看| 国产欧美一区在线| 中文字幕永久有效| 亚洲国产精品日韩专区av有中文| 91麻豆国产语对白在线观看| av观看在线| 亚洲国产精品人久久电影| 日韩不卡视频在线| 国产三级三级三级精品8ⅰ区| 黄色免费网址大全| 久久久9色精品国产一区二区三区| 亚洲一区二区久久久久久| 羞羞视频在线观看免费| 亚洲国产精品久久久| 波多野结衣视频网站| 国产精品色在线观看| 在线免费黄色网| 激情久久久久久久| 欧美日韩视频在线一区二区观看视频| 亚洲www啪成人一区二区| 日韩视频亚洲视频| 亚洲精品久久久狠狠狠爱 | 欧美乱大交xxxxx| 人妻精品一区一区三区蜜桃91| 欧美性生交大片免费| 中文字幕第二区| 国产精品正在播放| 凹凸国产熟女精品视频| 久久免费精品视频在这里| 99视频国产精品免费观看| 中老年在线免费视频| 中文字幕亚洲欧美一区二区三区| 99久久国产热无码精品免费| 欧美日韩激情网| 男人在线观看视频| 91麻豆精品一区二区三区| 9l视频白拍9色9l视频| 国精品一区二区| 亚洲午夜精品国产| 日本亚洲不卡| 成人精品一区二区三区电影黑人| 无遮挡在线观看| 精品国产欧美一区二区三区成人| 理论片中文字幕| 欧美剧情片在线观看| 欧美特黄aaaaaa| 一区二区三区中文字幕精品精品 | 亚洲综合偷拍欧美一区色| 少妇无套高潮一二三区| 国产一区久久久| 国产成人精品无码播放| 亚洲裸体俱乐部裸体舞表演av| 亚洲精品一区二区毛豆| 欧美国产极品| 99在线视频免费观看| 欧美日韩卡一| 日韩av不卡电影| 国产99re66在线视频| 北条麻妃99精品青青久久| 日本aaa在线观看| 日韩视频免费观看高清完整版在线观看 | 成年人视频在线免费观看| 精品久久久久久久久久久久久久久| 国产情侣呻吟对白高潮| 午夜精品福利一区二区蜜股av| 毛片aaaaaa| 久久综合九色欧美综合狠狠 | 国产精品探花视频| 在线中文字幕一区二区| 亚洲伊人成人网| 亚洲国产精品一区二区久久 | 欧美视频日韩| 最新中文字幕久久| 成人3d动漫在线观看| 蜜桃传媒视频麻豆第一区免费观看 | 午夜激情福利电影| 国产女主播在线一区二区| 午夜理伦三级做爰电影| 99综合电影在线视频| 日本美女视频网站| 国产老妇另类xxxxx| 99中文字幕在线| 国产一区二区三区国产| 亚洲图色中文字幕| 精品无码三级在线观看视频| 五月激情婷婷在线| 精品制服美女丁香| 欧美日韩精品区别| 国产做a爰片久久毛片| 国产传媒免费观看| 国产在线精品不卡| 欧美视频亚洲图片| 国产精品自拍网站| 少妇伦子伦精品无吗| 国产98色在线|日韩| 午夜免费福利网站| 国产福利精品导航| 成年女人免费视频| 91在线一区二区| 久久久久久九九九九九| 久久久不卡网国产精品二区| 国产精品亚洲无码| 国产精品理论片| 亚洲AV成人无码精电影在线| 亚洲另类在线一区| 久久精品国产亚洲AV无码麻豆 | 日韩av综合在线观看| 香蕉成人久久| 超碰在线人人爱| 国产自产视频一区二区三区| 制服下的诱惑暮生| 99re视频精品| 欧美另类69xxxx| 夜夜揉揉日日人人青青一国产精品 | 欧美一区二区三区四区在线| 周于希免费高清在线观看| 国产国语videosex另类| 欧美videos粗暴| 成人欧美一区二区| 亚洲性视频大全| 在线观看一区二区三区三州| 亚洲午夜一区| 免费日韩中文字幕| 国产一区 二区 三区一级| 人妻激情偷乱频一区二区三区| 97精品国产露脸对白| 黑人と日本人の交わりビデオ| 亚洲天堂精品视频| 青青国产在线观看| 欧美人与性动xxxx| 人妻妺妺窝人体色www聚色窝| 一区二区三区四区精品| 色呦呦在线看| 国产精品久久久久久久久影视| 日韩精品一区国产| 日韩性感在线| 在线播放不卡| 日本 片 成人 在线| 成人在线综合网| 男女男精品视频网站| 亚洲香肠在线观看| 亚洲视频一区二区三区四区| 精品国产免费人成电影在线观看四季 | 亚洲欧美国产日韩中文字幕| 羞羞的网站在线观看| 日本久久久久久久久久久| 日韩av综合| 日韩一区二区三区资源| 亚洲高清av| 热久久久久久久久| 日本一区二区三区四区| 黄网站免费在线| 在线综合视频播放| 国产69久久| 欧美中文字幕在线观看| 精品伊人久久| 在线不卡视频一区二区| 久久亚洲国产精品一区二区| 超碰caoprom| 亚洲欧美日韩综合aⅴ视频| 亚洲精品国产精品乱码视色| 日韩经典第一页| 国产一线二线在线观看| 亚洲999一在线观看www| 成人在线一区| 天堂社区在线视频| 久久久噜噜噜久噜久久综合| 日韩欧美三级在线观看| 欧美一区二区视频网站| 9i精品一二三区| 国产成人精品久久亚洲高清不卡| 美国十次av导航亚洲入口| 男人天堂a在线| 丁香五精品蜜臀久久久久99网站 | 亚洲成av人片一区二区| 亚洲精品.www| 欧美激情在线观看视频| 麻豆久久一区| 黄色一级片av| 国产精品一卡二卡| 波多野结衣爱爱视频| 欧美一区二区三区喷汁尤物| 精品国产丝袜高跟鞋| 成人av在线天堂| 婷婷综合五月| 毛片毛片毛片毛| 亚洲人午夜精品天堂一二香蕉| 91丨porny丨在线中文| 精品国产一区二区三区久久久狼| 久久精品xxxxx| 亚洲午夜精品久久| 精品在线一区二区| 综合五月激情网| 日韩一级大片在线| 污污的视频在线观看| 国产日韩久久| 国产一区白浆| 亚洲精品国产一区黑色丝袜| 欧美综合亚洲图片综合区| yw在线观看| 91精品国产综合久久香蕉的用户体验| 天天做天天爱天天综合网| 欧美日韩一区二区区| 亚洲国产精品尤物yw在线观看| 五月激情丁香婷婷| 日韩av不卡在线| 91亚洲国产| 日本wwww色| 天天综合网天天综合色| 国产在线黄色| 国产有码一区二区| 欧美视频官网| 中文字幕免费视频| 欧美另类变人与禽xxxxx| av激情在线| 久久久久高清| 奇米亚洲午夜久久精品| 国产色无码精品视频国产| 精品国产91亚洲一区二区三区婷婷| 国产欧洲在线| 视频一区二区三区免费观看| 国产综合久久久久久久久久久久| 日韩乱码人妻无码中文字幕| 亚洲视频在线播放| 97色婷婷成人综合在线观看| 久久99久久99精品| 国产视频一区二区三区在线观看| 国产尤物视频在线观看| 97国产在线视频| 日韩中字在线| 国产情侣久久久久aⅴ免费| 91国产成人在线| 人妖欧美1区| 日本不卡一区二区三区视频| 国产精品一区二区黑丝 | 717成人午夜免费福利电影| 大香伊人中文字幕精品| 日韩免费av电影| 成人网页在线观看| 亚洲无码久久久久| 青青草精品毛片| 欧美不卡视频| jizz中文字幕| 亚洲精品理论电影|