带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(4)

简介: 带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(4)

带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(3)https://developer.aliyun.com/article/1339761?groupCode=taobaotech

image.png转换器

@Mapper
public abstract class Converter {
public static Converter INSTANT = Mappers.getMapper(Converter.class);
// 字段类型映射修改
@Mapping(source = "age", target = "age", resultType = Integer.class)
// 字段名映射修改
@Mapping(source = "userNick", target = "nick") public abstract Target convert(Source source);
}

 


image.png使用示例

  final Source source = Source.builder() 2    .id(1L)
  .age(18L)
.userNick("Nick")
.build();
final Target target = Converter.INSTANT.convert(source);
System.out.println(target);

 

输出:

Target(id=1, age=18, nick=Nick)

 

image.png源码解析

《告别BeanUtils,Mapstruct入门到精通》

 

高级转换

 

我们在业务代码中经常会用到以下转换方法,因此将示例代码写在下面。

 

一对多字段互转

 

在业务代码中,常出现需要将一个类中的一些字段转换为另一个类的JSON字段的情况,以下是一个简单的例子:

 

 

 

image.png互相转换的类 VO:

前端渲染内容。

 

  @Data
  @Builder
  public class VO {
  private Long id;
  private Long age;
  private String userNick;
 }

DTO:传输内容,其中仅包含id,其余字段均存放在extra字段中。

 

  @Data
  public class DTO {
  private Long id;
private String extra;
 }

 

带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(5)https://developer.aliyun.com/article/1339759?groupCode=taobaotech

相关文章
|
存储 设计模式 算法
DDD之于业务支撑的意义
DDD之于业务支撑的意义
346 0
|
IDE 开发工具
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(2)
带你读《2022技术人的百宝黑皮书》——stream的实用方法和注意事项(2)
231 0
|
存储 Java 开发者
领域驱动设计入门指南
领域驱动设计入门指南
458 0
|
存储 架构师 测试技术
架构之道:人人都是架构师(2)
每个业务系统的开发者都应该具备一定的架构师素养,架构师的重要职责不仅仅是做决策,更重要的是提升团队的整体能力。一个好的架构师应该聚焦于业务和系统,定义问题和结果,设计系统、模块和代码,同时也需要解决跨域问题,确定团队间的边界,制定规范,统一语言,并创建一个让每个人都能成长为架构师的环境,以促进团队的敏捷性。本文旨在探讨如何培养架构思维,并阐述了架构师的职责、能力模型、方法论,以及如何成为架构师。
408 10
|
存储 运维 架构师
架构之道:人人都是架构师(1)
架构之道:人人都是架构师
521 8
|
消息中间件 供应链 测试技术
图解 DDD,这一篇总结太全面了!
DDD领域驱动是非常热的架构设计,微服务也有大量涉及,本文详细解析领域驱动设计(DDD),涵盖DDD原理、实践步骤及核心概念等,帮助更好地管理复杂业务逻辑。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
图解 DDD,这一篇总结太全面了!
|
开发框架 Java 数据库连接
这可能是你见过hibernate-validator最全国际化方案(上)
为了实现hibernate-validator国际化差点要了老命,最近在研究hibernate-validator以及国际化,在墙里墙外找了很多很久,可能是因为版本的更新迭代,找到的资料基本都用不了了。自己折腾了半天,终于琢磨出来了,特此记录。
1943 0
这可能是你见过hibernate-validator最全国际化方案(上)
|
安全 IDE Java
MapStruct-JavaBean映射工具使用指南
MapStruct-JavaBean映射工具使用指南
265 9
|
人工智能 数据处理
AI生图美学在淘宝的实践应用(1)
AI生图美学在淘宝的实践应用
665 4
|
数据挖掘
技术人应该知道的电商运营小知识(中)
技术人应该知道的电商运营小知识(中)
390 1