引入类库
类库
<mapstruct.version>1.5.3.Final</mapstruct.version>
<!-- use mapstruct-jdk8 for Java 8 or higher -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</dependency>
插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
编写接口
@Mapper
public interface ItemConvert {
/**可以直接调用该INSTANCE对应的方法实现转换*/
ItemConvert INSTANCE = Mappers.getMapper(ItemConvert.class);
/**接口方法,mapstruct会自动通过编译代码修改实现*/
SkuDTO2 domain2Dto(Sku2 sku2);
/**自定义转换方法*/
default Item2 item1ToItem2(Item1 item1) {
if (item1 == null) {
return null;
}
Item2 item2 = new Item2();
item2.setItemId(11111L);
item2.setTitle(item1.getTitle());
return item2;
}
}
//mapstruct生成的实现类
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2019-07-30T18:38:11+0800",
comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_101 (Oracle Corporation)"
)
public class ItemConvertImpl implements ItemConvert {
@Override
public SkuDTO2 domain2Dto(Sku2 sku2) {
if ( sku2 == null ) {
return null;
}
SkuDTO2 skuDTO2 = new SkuDTO2();
skuDTO2.setSkuId( sku2.getSkuId() );
skuDTO2.setSkuCode( sku2.getSkuCode() );
if ( sku2.getSkuPrice() != null ) {
skuDTO2.setSkuPrice( Long.parseLong( sku2.getSkuPrice() ) );
}
List<String> list = sku2.getNameList();
if ( list != null ) {
skuDTO2.setNameList( new ArrayList<String>( list ) );
}
// mapstruct直接调用的是在接口中自定义的实现
skuDTO2.setItem( item1ToItem2( sku2.getItem() ) );
return skuDTO2;
}
}