带你读《2022技术人的百宝黑皮书》——MapStruct,降低无用代码的神器(3)https://developer.aliyun.com/article/1339761?groupCode=taobaotech
转换器
@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); }
使用示例
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)
源码解析
《告别BeanUtils,Mapstruct入门到精通》
高级转换
我们在业务代码中经常会用到以下转换方法,因此将示例代码写在下面。
一对多字段互转
在业务代码中,常出现需要将一个类中的一些字段转换为另一个类的JSON字段的情况,以下是一个简单的例子:
互相转换的类 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