如何使用MapStruct优雅的告别get,set

我们开发过程中会遇到很多bean拷贝的过程,最简单粗暴得方法就是set/get方法,当然这也是最臃肿的方法,代码显得过于冗长和笨重,其次还有框架BeanUtils在使用反射的时候都会影响到性能。虽然我们可以进行反射信息的缓存来提高性能。但是像这种的话,需要类型和名称都一样才会进行映射,有很多时候,由于不同的团队之间使用的名词不一样,还是需要很多的手动 set/get 等功能,而怎么才能又安全又优雅?

MapStruct注释处理器
MapStruct是一个Java注释处理器,用于生成类型安全的bean映射类。
Mapstruct 与过去常用的beanUtil转换有高性能的转换优势,编译期自动生成的mapper实现类能够更加优雅的来实现各种隐式类型转换,以实现快速而又敏捷的开发,告别臃肿的手动get、set

优点:
1,通过使用普通方法调用get,set 而不是反射来快速执行
2,变异时类型安全性:只能映射相互映射的对象和属性,不能将order实体以外映射到customer DTO 等
3,如果有映射不完整时(映射不完整或找不到正确的映射方法或类型转换异常),编译会抛出异常
4,可以通过freemarker定制化开发

工作组件:
org.mapstruct:mapstruct: 包含必需的注释 例如:@Mapping
org。mapstruct:mapstruct-processor:包含注释处理器,该注释处理器生成映射器实现

如何使用?
1,首先引入pom(版本最好在1.16.16以上)通常是和lombok一起使用

<properties>
    <mapstruct.version>1.2.0.Final</mapstruct.version>
</properties>
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-jdk8</artifactId>
    <version>${mapstruct.version}</version>
</dependency>
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>${mapstruct.version}</version>
</dependency>

2,安装idea中的mapstruct support 插件 安装并重启idea(不是必须项,个人感觉好用)
在这里插入图片描述
3,定义一个映射器
在所需的映射方法定义一个接口 并用@Mapper注释(在生成的实现中,源类型的所有可读属性都将复制到目标类型的相对应的属性中),如果目标实体中的名称不相同,可以通过@Mapping注释指定其名称进行对应,如果某个字段不想映射可以使用@Mapping(ignore = true) 排除该字段,另外target是必须添加的,source可以不添加(如果不添加则直接使用默认defaultValue)
在这里插入图片描述

另:还有其他的功能 比如组合映射,使用表达式映射,使用其他的值,嵌套映射,逆映射,继承与共享配置,还可使用自定义类型转换方法等等可以自行查看。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WGY_NOBUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值