专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

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会报找不到对应别名标注的转换方法。

网友对人工智能武器感到莫名的恐怖警惕AI在军事上的滥用引言霍金生前预言人工智能(ArtificialIntelligence,AI)未来或许取代人类当代牛人马斯克也曾经警告称,人工智能比核武器更危险,摧毁人类就像碾死蚂蚁一样。马斯克的桂林酒店及民宿客房订单量增长旅游市场转暖央视网消息日前,第十三届广西(河池)园林园艺博览会在河池市宜州区开幕,博览会每年在广西各地市轮流举办,全面展示广西园林园艺成果。本届园林园艺博览会将河池市世居少数民族的民族文化刘三乐视手机Y1Pro登上京东手机热卖榜TOP2,这是什么神仙产品?刚上市不久的乐视手机Y1Pro就登上了京东手机热卖榜Top2,售价仅499元起,像极了iPhone14!不过某米新发布的手机也是,这都苹果化了?这款手机一共有6GB64GB4GB12023,跨境电商如何选品及营销定位?定位市场的一些方法近年来,中国跨境电商交易额占国内货物贸易进出口比例不断增大,这主要得益于高效的政策与强劲的市场驱动力,为跨境进出口企业服务商的发展提供了天然而庞大的机遇。国内企业面对如此机遇,如何A股芯片的春天!光刻机突破再获新专利,这5家公司或将大涨目前高性能模拟芯片FPGA芯片汽车芯片等领域依然以进口为主,存在广阔的国产替代空间。半导体设备和零部件方面,由于美国出口管制升级,我国未来有望健全新型举国体制,加快实现高水平科技自美国国家实验室高性能富锰阳离子无序岩盐阴极的替代合成方法背景对于锂离子电池,层状插层阴极如LiCoO2(LCO)和LiNixMnyCo1xyO2(NMC)目前在LIB市场上占主导地位,因为它们提供高比能量(例如,富含Ni的NMC7008盘点将发布的骁龙8Gen2旗舰一加11最豪横,三星和努比亚要发力现阶段,智能手机圈正在上演一出神仙打架的好戏,各大品牌的旗舰级产品都将会集中在2022年年底和2023年年初问世,如果不着急更换手机的话,个人建议可以做一次等等党,毕竟这些新款旗舰小米13使用报告小米6钉子户该拔了,十三香真的香这一次的小米13系列可谓是热度非常高,从几个月前的预热,到现在的正式发布,小米几乎快和苹果一样每天都会时不时上几个热搜。那大家如此期待的小米13这一次表现如何呢?雷军在发布会上喊的手机用久了经常提示内存不足,怎么办?几步轻松解决!新买的手机不管是从颜值操控还是从运行流畅度来说,那绝对都是没得挑剔的,但是对于安卓系统的手机来说,用久了就会出现运行卡顿的问题,小内存的手机也会经常出现内存不足的提示,比较烦人,不截至目前,盘点2022年采用512GB超大内存的手机1iPhone14搭载满血版A15仿生处理器,采用台积电5nm工艺制程,拥有卓越的性能以及超低功耗,无论游戏还是日常,都游刃有余正面是一块6。1英寸的AMOLED柔性直屏,支持1。男生耗阳行为有哪些?警告能不做就不做,别等生病才后悔阴和阳相对而言,阴指的是人体,而阳是指人体所需的能量。宇宙中万物的生长均需要能量的供给,那么这个能量的释放就是阳气的释放,阳气具有生发释放的作用。如果人体没有阳气,就如同一个躯壳。
绝叫出生时的诅咒头条创作挑战赛一个孩子的出生往往伴随着疼爱与赞美,那个女孩出生却伴随着来自她妈妈的诅咒其实我比较想要一个男孩。那女儿被迫降生于这个荒谬的世界,成为某人的孩子。最爱的妈妈所给予你的期战波黑潘臻琦一分未得还四犯为啥正负值还是正八在中国女篮大胜波黑的比赛中,女篮姑娘们大部分都有亮眼的成绩,但一米九零的大前锋潘臻琦统计数据却很难看。出场时间仅有14分钟,主要集中在第一节得分0,还有4次犯规。潘臻琦一分未得,为胡惟庸请朱元璋到家中喝酒,朱元璋走到一半,突然下令满门抄斩中国封建王朝数千年的相权政治制度中,明朝丞相胡惟庸十分荣幸,成为了宰相制度的终结者。作为中国历史上最后一个丞相,他也曾一人之上万人之下风光无限。但他的结局却让人平静不下来,更令人唏2004年洪学智生病住院,批评前来看望的儿子你这个省长是咋当的在阅读此文之前,麻烦您点击一下关注,既方便您进行讨论和分享,又能给您带来不一样的参与感,感谢您的支持在吉林省四平市的英雄广场内,坐落着一处战役纪念馆。它通体白色,门口的浮雕上仿佛能如何做一个PHP自动安装程序install。php头条创作挑战赛PHP中有很多优秀的作品,为了让人们更好的安装使用,都会有一个安装引导页面,那这个页面是如何实现的呢?基本功能1生成一个conntent。php的数据库链接文件2生成缺芯根本问题找到了?清北学霸成美芯专家,有关部门终于出手前言也正因如此,华为在最近几年斥巨资聘请尖端科研人才挑战高端的芯片研发,截止到目前始终没能交出一份显著的答卷,我国的缺芯现象已然存在。让人感到不解的是,我国是一个拥有十四亿人口的大实践专精特新,迪米生活科技迈出重要一步近年来,随着消费者对口腔护理刚性需求的提升,电动牙刷已经成为个人口腔护理产品领域消费升级的代表之一。电动牙刷作为个护健康消费电子领域中相对成熟的新兴品类,在国内市场发展迅猛,成长空王小川如何理解区块链?web3当下正火热,NFT已经有些过气了,今天想分享一下区块链和比特币。最近喜欢考古一些早年的视频,在youtube上刷到一个三四年前许知远采访王小川的视频,作为一个web2。0的谈谈信息化和教育的关系(2)二教育信息化和信息化教育合力催生了智慧黑板。所谈的教学信息化和信息化教育体现在教育环境中最明显最直观的改变就是黑板信息化。而所谓的黑板信息化就是黑板科技化智能化,就是将信息技术与传台积电创办人张忠谋身价逾600亿!靠自己成为富一代背后秘辛头条创作挑战赛台积电创办人张忠谋是打造台湾半导体产业版图的重量级人物,更是靠自己变富一代的最佳例子,他2018年6月退休前持有台积电股票12。5万张,假设他在退休后一股未卖,预估累4个技巧,教你培养分类思维,掌握通往成功的底层逻辑作者罗西来源笔记侠转自商业的常识近日,苹果举办了2022年秋季新品发布会,发布了全新的iPhone14系列重塑的AirPodsPro以及三款新AppleWatch。虽然每年发布会都
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软网