Skip to main content

16.Mapstruct类型转换处理框架

由于java是强类型显示声明和赋值的编程语言,这导致Java中从一个类型转换成另一个类型,就是把一个类型的值赋值到另一个类型的值时,需要一个参数一个参数 去赋值,这让编码的工作增加以及一点都不酷。所以, mapstruct就是解决2个类型之间的转换能直接转换的这么一种方案。其实使用方式是通过声明一个接口和接口的方法 声明,然后使用者就可能通过这些声明的接口方法直接转换类型了. 原理是mapstruct通过接口以及注解的方式,自动生成转换的代码来实现类型与类型之间的转换, 从而来减轻开发者的心智负担。如:

1 直接转换

Area
@Data
public class Area {
private String code;

private String name;
}

2 自定义转换属性

有些属性需要自定义转换,这时注解已经不能满足了,转换的情况了,需要为这部分的转换写转换逻辑.

2.1 List<String>转List<>复合对象

这里使用的是qualifiedByName注解来声明属性的转换方法名

CreateStoreRequest
@Data
@Builder
public class CreateStoreRequest {
private String name;

private List<String> banners; // 这里一个单一数组类型
}

3 默认值

3.1 constant设定target属性默认值

source属性不存在而target属性存在的情况下,可以用constanttarget设定默认值

    @Mappings({
@Mapping(target = "isEnable", constant = "true") // <-- 设定target的isEnable的参数为true
})
Store createRequestToStore(CreateStoreRequest request);