加入收藏 | 设为首页 | 会员中心 | 我要投稿 江门站长网 (https://www.0750zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

什么是裸金属服务器?

发布时间:2021-02-17 13:13:24 所属栏目:外闻 来源:互联网
导读:可以自动映射的类型 除了名字不一致以外,还有一种特殊情况,那就是类型不一致,如上面的例子中,在PersonDO中用String类型表示用户性别,而在PersonDTO中使用一个Genter的枚举表示用户性别。 这时候类型不一致,就需要涉及到互相转换的问题 其实,MapStruct

可以自动映射的类型

除了名字不一致以外,还有一种特殊情况,那就是类型不一致,如上面的例子中,在PersonDO中用String类型表示用户性别,而在PersonDTO中使用一个Genter的枚举表示用户性别。

这时候类型不一致,就需要涉及到互相转换的问题

其实,MapStruct会对部分类型自动做映射,不需要我们做额外配置,如例子中我们将String类型自动转成了枚举类型。

一般情况下,对于以下情况可以做自动类型转换:

  •  基本类型及其他们对应的包装类型。
  •  基本类型的包装类型和String类型之间
  •  String类型和枚举类型之间

自定义常量

如果我们在转换映射过程中,想要给一些属性定义一个固定的值,这个时候可以使用 constant


 

可以看到,我们使用MapStruct完美的将PersonDO转成了PersonDTO。

上面的代码可以看出,MapStruct的用法比较简单,主要依赖@Mapper注解。

但是我们知道,大多数情况下,我们需要互相转换的两个类之间的属性名称、类型等并不完全一致,还有些情况我们并不想直接做映射,那么该如何处理呢?

其实MapStruct在这方面也是做的很好的。

MapStruct处理字段映射

首先,可以明确的告诉大家,如果要转换的两个类中源对象属性与目标对象属性的类型和名字一致的时候,会自动映射对应属性。

那么,如果遇到特殊情况如何处理呢?

名字不一致如何映射

如上面的例子中,在PersonDO中用name表示用户名称,而在PersonDTO中使用userName表示用户名,那么如何进行参数映射呢。

这时候就要使用@Mapping注解了,只需要在方法签名上,使用该注解,并指明需要转换的源对象的名字和目标对象的名字就可以了,如将name的值映射给userName,可以使用如下方式:

 

但是,编写这样的映射代码是一项冗长且容易出错的任务。MapStruct等类似的框架的目标是通过自动化的方式尽可能多地简化这项工作。

MapStruct的使用

MapStruct是一种代码生成器,它极大地简化了基于"约定优于配置"方法的Java bean类型之间映射的实现。生成的映射代码使用纯方法调用,因此快速、类型安全且易于理解。

约定优于配置,也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

假设我们有两个类需要进行互相转换,分别是PersonDO和PersonDTO,类定义如下:


(编辑:江门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读