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

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

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


基础转换

字段完全一致

 

image.png待转换的类

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

 

 

image.png转换目标类

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

 

 

image.png转换器


注意:Mapper是Mapstruct的注解。

@Mapper
public abstract class Converter {
public static Converter INSTANT = Mappers.getMapper(Converter.class);
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, userNick=Nick)

 

 

一一对应的字段名不一致、类型不一致

 


image.png待转换的类

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

 

 

image.png转换目标类

  @Data
  public class Target {
  private Long id;
  private Integer age;
  private String nick;
 }

 

 

转换目标类修改了age字段的类型,和userNick字段的名字,这两个类的字段仍然是一一对应的。

 

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


相关文章
|
架构师 NoSQL Java
【案例实战】SpringBoot3.x自定义封装starter实战
【案例实战】SpringBoot3.x自定义封装starter实战
【案例实战】SpringBoot3.x自定义封装starter实战
|
SQL 存储 分布式计算
ODPS开发大全:入门篇(3)
ODPS开发大全:入门篇
1149 19
|
开发框架 Java 数据库连接
这可能是你见过hibernate-validator最全国际化方案(上)
为了实现hibernate-validator国际化差点要了老命,最近在研究hibernate-validator以及国际化,在墙里墙外找了很多很久,可能是因为版本的更新迭代,找到的资料基本都用不了了。自己折腾了半天,终于琢磨出来了,特此记录。
2089 0
这可能是你见过hibernate-validator最全国际化方案(上)
|
Java 数据库连接 Maven
最新版 | SpringBoot3如何自定义starter(面试常考)
在Spring Boot中,starter是一种特殊的依赖,帮助开发人员快速引入和配置特定功能模块。自定义starter可以封装一组特定功能的依赖和配置,简化项目中的功能引入。其主要优点包括模块化、简化配置、提高代码复用性和实现特定功能。常见的应用场景有短信发送模块、AOP日志切面、分布式ID生成等。通过创建autoconfigure和starter两个Maven工程,并编写自动配置类及必要的配置文件,可以实现一个自定义starter。最后在测试项目中验证其有效性。这种方式使开发者能够更便捷地管理和维护代码,提升开发效率。
2165 1
最新版 | SpringBoot3如何自定义starter(面试常考)
|
XML Java 数据库连接
MybatisX快速生成代码(mybatis plus模板)
MybatisX快速生成代码(mybatis plus模板)
|
消息中间件 供应链 测试技术
图解 DDD,这一篇总结太全面了!
DDD领域驱动是非常热的架构设计,微服务也有大量涉及,本文详细解析领域驱动设计(DDD),涵盖DDD原理、实践步骤及核心概念等,帮助更好地管理复杂业务逻辑。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
图解 DDD,这一篇总结太全面了!
|
缓存 JavaScript API
Vue3— computed的实现原理
【9月更文挑战第5天】Vue3— computed的实现原理
552 10
|
前端开发 JavaScript 定位技术
GPS坐标转百度坐标
GPS坐标转百度坐标
422 1
|
存储 架构师 测试技术
架构之道:人人都是架构师(2)
每个业务系统的开发者都应该具备一定的架构师素养,架构师的重要职责不仅仅是做决策,更重要的是提升团队的整体能力。一个好的架构师应该聚焦于业务和系统,定义问题和结果,设计系统、模块和代码,同时也需要解决跨域问题,确定团队间的边界,制定规范,统一语言,并创建一个让每个人都能成长为架构师的环境,以促进团队的敏捷性。本文旨在探讨如何培养架构思维,并阐述了架构师的职责、能力模型、方法论,以及如何成为架构师。
551 10
|
存储 运维 架构师
架构之道:人人都是架构师(1)
架构之道:人人都是架构师
783 8