依赖
<properties>
<org.mapstruct.version>1.4.1.Final</org.mapstruct.version>
<org.projectlombok.version>1.18.12</org.projectlombok.version>
</properties>
<dependencies>
<!-- mapstruct,需要对应lombok版本-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
<!-- 升级lombok版本 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
接口类
/**
* @author UnityAlvin
* @date 2021/9/28 18:57
*/
@Mapper(componentModel = "spring")
public interface BusinessCovertBasic {
BusinessCovertBasic INSTANCE = Mappers.getMapper(BusinessCovertBasic.class);
// 手动设置某个值:expression中,不包含的类需要具体到包名
@Mappings({
// LocalDateTime转Date
@Mapping(target = "createTime",
expression = "java(java.util.Date.from(omsOrder.getCreateTime()" +
".atZone(java.time.ZoneId.systemDefault()).toInstant()))"),
// 时间戳转Date
@Mapping(target = "validDate", expression = "java(new java.util.Date(omsOrder.getValidDate()))"),
// 单位为分的金额转单位为元
@Mapping(target = "refundFee",
expression = "java(new java.math.BigDecimal(omsOrder.getRefundFee())" +
".divide(new java.math.BigDecimal(100), 2, java.math.BigDecimal.ROUND_HALF_UP))"),
// 对象/List转JSON
@Mapping(target = "baseInfo",
expression = "java(com.alibaba.fastjson.JSON.toJSONString(omsOrder.getBaseInfo()))"),
// 直接为某个字段赋具体值
@Mapping(target = "orderNoteChangeFlag", expression = "java(0)")
})
OmsOrderSimpleResponse orderToOmsOrderSimpleResponse(OmsOrder omsOrder);
// 将原有source列的值转换到target列上
@Mappings({
@Mapping(source="id", target="mchId")
})
OmsOrderItemView orderItemToOrderItemView(OmsOrderItem orderItem);
// 忽略某个字段的映射
// 方式2:注解
// https://blog.csdn.net/zyw61483/article/details/112990760
@Mappings({
@Mapping(target="mchId", ignore=true)
})
OmsOrderItemView orderItemToOrderItemView(OmsOrderItem orderItem);
}