插件介绍
这个插件主要作用于对象转换器(属性名不一致的情况下)也可以正常的转换,例如将1个或者多个实体类转换为一个实体类
将PO对象集合转换为VO对象集合等等
maven
<!--版本依赖-->
<properties>
<org.mapstruct.version>1.3.1.Final</org.mapstruct.version>
<lombok.version>1.18.12</lombok.version>
</properties>
<dependencies>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</dependency>
<!--MapStruct相关依赖-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
可以省略部分
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.1.Final</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
先后顺序有区别,并且这个版本兼容新也可以不需要追求新的版本
lombok加载必须早于mapstruct否则会失效,如果转换失败建议查看加载的元件删除重新导包编译
idea插件
lombok
mapstruct
使用教学
准备操作:
- 新建一个接口(填写类上注解)
@Mapper
public interface ConverterUtils {}
- 加入一个常量
ConverterUtils INSTANCE = Mappers.getMapper(ConverterUtils.class);
- 编写转换器
场景一:(单属性不一致转换)
@Mapping(source = "image", target = "age")
Animal ToAnimal(Cat cat);
场景二:(集合转换)
@Mappings({
@Mapping(source = "code", target = "warnobjectcode"),
@Mapping(source = "mdcad", target = "mdcd")}
)
Animal ToAnimal(Cat cat);
场景三:(集合转换)
@Mappings({
@Mapping(source = "code", target = "warnobjectcode"),
@Mapping(source = "mdcad", target = "mdcd")}
)
DcMdMdwarnobjectB DcMdMdwarnobjectBVoToPo(DcMdMdwarnobjectBVo dcMdMdwarnobjectBVos);
List<DcMdMdwarnobjectB>getList(List<DcMdMdwarnobjectBVo>dcMdMdwarnobjectBVos);
对比单体转换器
BeanUtil.copyProperties();
ConverterUtils.INSTANCE.getList(bVos);
copyProperties()只会克隆同属性字段
ConverterUtils.INSTANCE.getList(bVos) 支持克隆集合还有不同属性名的对象以及多个对象合并为一个
THE END
暂无评论内容