游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

12基于qualifiers选择Mapping方法

  如果MapStruct在将A类型转换为B类型时,匹配到多个映射方法【这些映射方法的入参都是A类型,返回值是B类型】。则程序会报编译错误,MapStruct会给出相应的提示。
  我们先来看个具体的例子。
  实体类型定义如下:DatapublicclassOriginalRelease{privateStringtitle;}DatapublicclassGermanRelease{privateStringtitle;}
  我们有个工具类支持将title转换成德语和英语。publicclassTitles{将title转换为德语paramtitlereturnpublicStringtransTitle2German(Stringtitle){returnGerman:title;}将title转换为英语paramtitlereturnpublicStringtransTitle2English(Stringtitle){returnEnglish:title;}}
  Mapper类定义如下:Mapper(usesTitles。class)publicinterfaceReleaseMapper{GermanReleasetoGerman(OriginalReleaserelease);}
  上述代码编译后,会报如下错误:
  AmbiguousmappingmethodsfoundformappingpropertyStringtitletoString:StringTitles。transTitle2German(Stringtitle),StringTitles。transTitle2English(Stringtitle)。Seehttps:mapstruct。orgfaqambiguousformoreinfo。
  大概意思就是:MapStruct在将OriginalRelease。title转换为GermanRelease。title时。匹配到2个方法,分别是:StringTitles。transTitle2German(Stringtitle)和StringTitles。transTitle2English(Stringtitle)。
  MapStruct无法决定使用哪个方法进行转换,因此报错。
  针对上面的场景,MapStruct提供了qualifiers机制,供程序员明确指定使用哪个方法进行转换。
  qualifiers机制提供了两种方式:qualifiedBy和qualifiedByName。下面我们分别来介绍这两种用法。
  1、qualifiedBy
  (1)首先我们需要定义注解,该注解用于标识我们的转换方法(MappingMethod);QualifierTarget(ElementType。METHOD)Retention(RetentionPolicy。CLASS)publicinterfaceToGerman{}QualifierTarget(ElementType。METHOD)Retention(RetentionPolicy。CLASS)publicinterfaceToEnglish{}关于定义的注解,这里说三点:
  (1)该注解必须使用Qualifier标注;
  (2)该注解只能作用于方法;
  (3)该注解RetentionPolicy为RetentionPolicy。CLASS
  (2)使用定义的注解标注转换方法(MappingMethod);
  如此一来,注解和转换方法就建立了对应关系。publicclassTitles{ToGermanpublicStringtransTitle2German(Stringtitle){returnGerman:title;}ToEnglishpublicStringtransTitle2English(Stringtitle){returnEnglish:title;}}
  (3)在Mapper中使用注解,指定转换方法。
  为MappingqualifiedBy指定对应的注解,用于表示使用其标注的转换方法进行转换。Mapper(usesTitles。class)publicinterfaceReleaseMapper{ReleaseMapperINSTANCEMappers。getMapper(ReleaseMapper。class);Mapping(targettitle,qualifiedByToGerman。class)GermanReleasetoGerman(OriginalReleaserelease);Mapping(targettitle,qualifiedByToEnglish。class)EnglishReleasetoEnglish(OriginalReleaserelease);}
  注意:这里的usesTitles。class是必须加上的,否则MapStruct会报找不到对应注解标注的转换方法。
  (4)生成的Mapper实现类的代码publicclassReleaseMapperImplimplementsReleaseMapper{privatefinalTitlestitlesnewTitles();OverridepublicGermanReleasetoGerman(OriginalReleaserelease){if(releasenull){returnnull;}GermanReleasegermanReleasenewGermanRelease();germanRelease。setTitle(titles。transTitle2German(release。getTitle()));returngermanRelease;}OverridepublicEnglishReleasetoEnglish(OriginalReleaserelease){if(releasenull){returnnull;}EnglishReleaseenglishReleasenewEnglishRelease();englishRelease。setTitle(titles。transTitle2English(release。getTitle()));returnenglishRelease;}}
  2、qualifiedByName
  (1)使用Named注解为转换方法设置别名。publicclassTitles{Named(toGerman)publicStringtransTitle2German(Stringtitle){returnGerman:title;}Named(toEnglish)publicStringtransTitle2English(Stringtitle){returnEnglish:title;}}
  (2)在Mapper中使用别名,指定转换方法。
  为MappingqualifiedBy指定对应的别名,用于表示使用其标注的转换方法进行转换。Mapper(usesTitles。class)publicinterfaceReleaseMapper{ReleaseMapperINSTANCEMappers。getMapper(ReleaseMapper。class);Mapping(targettitle,qualifiedByNametoGerman)GermanReleasetoGerman(OriginalReleaserelease);Mapping(targettitle,qualifiedByNametoEnglish)EnglishReleasetoEnglish(OriginalReleaserelease);}
  注意:这里的usesTitles。class是必须加上的,否则MapStruct会报找不到对应别名标注的转换方法。

机械硬盘已死?固态硬盘全民化即将到来大家好,我是波导终结者。平时一直都有做一些视频剪辑的工作,出于省事(其实是懒),一直都是直接把源下载到仓库盘,然后在上面直接剪辑输出,很长一段时间用得还挺好的。前不久有一……11个曾经牛,现在早已被遗忘的高科技!80后美好的回忆来怀旧一下,看看当年曾经牛,现在早已被遗忘的那些高科技:MP3播放器,多么美好的回忆便携式DVD播放器,以前堪比笔记本电脑。车载电话机,这个应该是70后比较熟……这三种假牛奶,家长别再给孩子喝了,没营养还影响发育接孩子放学,路过超市想起家里的牛奶没有了,就进去准备买一箱。在我挑选的时候,儿子指着旁边的一款乳酸菌饮品,说他想喝那个。旁边的销售员听到了,过来赶紧接话说这款牛奶小朋友们……TES击败XYG复仇成功,但湘军语音曝出XYG粉丝懵了,比赛在王者荣耀最近的挑战者杯中,K甲、KPL的许多战队也是参与其中,按理来说,一个比赛而已,选手们只是负责打好比赛就可以。不过前几日,因为给秀豆拿四杀,所以对TES进行越泉行为,让……梦幻西游明日维护公告解读!官方免费赠送6套青花瓷又到了维护公告解读时间,本次的维护公告主要就是3件大事:1。官方免费赠送6套青花瓷;2。鲨鱼祥瑞返场;3。超级神虎迭代,外观曝光!2021年12月31日12:002022……当红女星蒋欣真的产下龙凤胎吗?今天想说的是蒋欣和王凯是情侣关系呢?还是普通朋友的关系?大家都知道他们是拍摄《欢乐颂》的时候相识相知的,从此经常被拍到一起吃饭的画面,还有王凯看蒋欣的眼神是很不同的,他们也经常……季后赛表现不如常规赛的球员罗德曼篮板骤减,张伯伦得分暴跌NBA的常规赛如同足球中的联赛,季后赛则更像杯赛,而且与足球不同的是,NBA中的季后赛强度是明显高于常规赛的,也正因如此,有一些球星在常规赛发挥出色,但是到了季后赛中会出现状态……广东男篮官宣布鲁克斯抵达国内本月中旬与球队会合北京时间9月6日,广东男篮今日官宣,小外援马尚布鲁克斯今日已经抵达国内,接下来在经过73的防疫隔离之后,本月中旬将于球队会合。马尚布鲁克斯1989年出生,身高1米98,司……经典战术第四期克鲁伊夫带火的343,如何在当今足坛绽放光芒?在当今世界足坛,足球战术依旧在潜移默化的变革。442阵型的发明可以被视为足坛战术革命的开端,进入本世纪后,3后卫也开始在主流舞台上登台亮相。而在如今,343阵型以一种进攻犀利、……这样耻辱性地输给韩国,很难让人接受前两天中国男篮刚刚有惊无险击败哈萨克斯坦,昨天中国U18男篮就在亚青赛半决赛里遭遇了韩国队的逆转。对于中国球迷来说,堵得慌,真他妈堵得慌。疫情以来,其实U系列国家队出征的……最新王者荣耀李白出装教程来啦,没想到酒仙的感情线也是如此丰富废话不多说,马上开始。王者荣耀李白出装教程快速上手王者荣耀新版本李白怎么出装李白出装玩法攻略李白想要快速发育,需要打野装备支撑,可以出到〔贪婪之噬〕,获得属性……小米13Ultra提前曝光,雷军表示下一代旗舰面向全球发售最近随着苹果的发售预热,小米也做了反攻,提前爆料下一代旗舰的产品。近来,雷军在Twitter上转发了一篇外媒对于小米12SUltra的文章,同时表示下一次Ultra旗舰手……
张镇麟,代表太阳出战夏季联赛!3位本土小将,将为NBA梦想而今天,太阳队的记者公布了球队的夏季联赛名单,中国球员张镇麟在列!也就是说,在夏天,将有3位本土球员为NBA梦想而战,他们分别是张镇麟、曾凡博(步行者)以及郭昊文(独行侠)。……27岁朱雨玲令人遗憾!从世界第一到无人问津,刘国梁也深感无奈在乒乓球这项运动中,中国一直都不缺乏名将,男队方面,远的如刘国梁、孔令辉,近的如张继科、马龙等人都是奥运会冠军,而且还是大满贯选手。女队方面,邓亚萍、王楠、张怡宁等人都是世界级……关于火箭队夏联名单中那些大家不熟知的球员首先声明一下,本文旨在跟大家介绍一下火箭队夏联名单上那些大家不熟悉的球员,至于大家比较熟悉的克里斯托弗、加鲁巴、史密斯、伊森、尼克斯、兰姆等球员这里就不赘言了!1、37号……腾讯ampampamp毕马威2022金融科技十大趋势展望报告本文报告来源于《2022金融科技十大趋势展望报告》,完整版共有68页,非常详尽,值得收藏。本报告下载领取方式详见文末本报告目录大纲如下:序言可信篇数据篇智能篇安全篇……中国56项世界遗产名录世界遗产,是指被联合国教科文组织和世界遗产委员会确认的人类罕见的、目前无法替代的财富,是全人类公认的具有突出意义和普遍价值的文物古迹及自然景观。在类别上,世界遗产包括文化遗产、……天狼星何时会爆炸,炸了会咋样,与人类有多大关系?这个题目看起来有点吓人,但请大家放心,本文只是通过天狼星会不会爆炸,来普及一些基本的天文知识,至于天狼星会不会爆炸,什么时候爆炸,看了自然就明白了。之所以把天狼星拿出来说……那些旅行花掉的钱,最终都去了哪里?人生一定要多一些旅行体验出去旅行,钱并不是真的花掉了而是变成了见识和阅历陪伴你终生这些见识和阅历会让你越来越值钱!NO。1旅行让女人更有气质……马龙我们今天的防守一无是处,这是我们输球的原因虎扑12月10日讯掘金以111123不敌马刺。赛后,掘金主教练迈克尔马龙接受媒体采访,谈到了本场比赛。我们抢不到篮板球,我们在篮板球上的差距对我们来说无疑是一个警醒……白菜别再炖着吃了,学会这样做,比吃大鱼大肉还香,开胃又解馋大家好!白菜是一种日常生活中常见的食物,白菜是用很多的白菜瓣组合成一个完整的白菜,白菜瓣越里面就会越小,白菜由三个颜色组成,分别是白、黄和浅绿色,白菜里面的水分很多,做法也很多……千年胡杨林秋意正浓,在这金秋十分,我们一家自驾去往了怪树林。怪树林位于内蒙古额济纳旗达来呼布镇西南部约28公里。昨天,我们游览了胡杨森林公园,那儿可是一片生机勃勃的景象。而今天,当我们步……老年人别穿得太随意,学学65岁阿姨的宽窄结合穿搭法,优雅显气60岁的女人是怎样的?心态不同,呈现的状况也是天差地别。每个年龄段都有各自的状态,最重要的是要学会调节自己的心态与生活方式。一些女性到了一定年纪,常常感叹自己的穿搭不够美观,尤……我国的人造太阳技术可控核聚变技术是被全人类寄予厚望的未来能源方式,它利用的是太阳燃烧的原理来释放热量,因此这类的实验装置常被称作人造太阳,我国中科院合肥物质科学研究院等离子体物理研究所,创造了一……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网