- 导包,导入 MapStruct的maven包
<!-- MapStruct begin -->
<!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-processor -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
</dependency>
<!-- MapStruct end -->
- 新建接口
/**
* @Name IMapping
* @Author xiaoLi
* @Date 2023/12/20 星期三 10:58
*/
@MapperConfig
public interface IMapping<SOURCE, TARGET> {
/**
* 映射同名属性
*
* @param var1 源
* @return 结果
*/
@Mapping(target = "createTime", dateFormat = "yyyy-MM-dd HH:mm:ss")
TARGET sourceToTarget(SOURCE var1);
/**
* 映射同名属性,反向
*
* @param var1 源
* @return 结果
*/
@InheritInverseConfiguration(name = "sourceToTarget")
SOURCE targetToSource(TARGET var1);
/**
* 映射同名属性,集合形式
*
* @param var1 源
* @return 结果
*/
@InheritConfiguration(name = "sourceToTarget")
List<TARGET> sourceToTarget(List<SOURCE> var1);
/**
* 反向,映射同名属性,集合形式
*
* @param var1 源
* @return 结果
*/
@InheritConfiguration(name = "targetToSource")
List<SOURCE> targetToSource(List<TARGET> var1);
/**
* 映射同名属性,集合流形式
*
* @param stream 源
* @return 结果
*/
List<TARGET> sourceToTarget(Stream<SOURCE> stream);
/**
* 反向,映射同名属性,集合流形式
*
* @param stream 源
* @return 结果
*/
List<SOURCE> targetToSource(Stream<TARGET> stream);
}
- 继承这个接口
定义接口 AwardMapping 继承 IMapping<DrawAwardVO, AwardDTO> 做对象转换操作
如果一些接口字段在两个对象间不是同名的,则需要进行配置,就像 uId -> userId
/**
* @Name AwardMapping
* @Author xiaoLi
* @Date 2023/12/20 星期三 10:58
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, unmappedSourcePolicy = ReportingPolicy.IGNORE)
public interface AwardMapping extends IMapping<DrawAwardVO, AwardDTO> {
@Mapping(target = "userId", source = "uId")
@Override
AwardDTO sourceToTarget(DrawAwardVO var1);
@Override
DrawAwardVO targetToSource(AwardDTO var1);
}