依赖

  1. <properties>
  2. <org.mapstruct.version>1.4.1.Final</org.mapstruct.version>
  3. <org.projectlombok.version>1.18.12</org.projectlombok.version>
  4. </properties>
  5. <dependencies>
  6. <!-- mapstruct,需要对应lombok版本-->
  7. <dependency>
  8. <groupId>org.mapstruct</groupId>
  9. <artifactId>mapstruct-jdk8</artifactId>
  10. <version>${org.mapstruct.version}</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.mapstruct</groupId>
  14. <artifactId>mapstruct-processor</artifactId>
  15. <version>${org.mapstruct.version}</version>
  16. <scope>provided</scope>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.mapstruct</groupId>
  20. <artifactId>mapstruct</artifactId>
  21. <version>${org.mapstruct.version}</version>
  22. </dependency>
  23. <!-- 升级lombok版本 -->
  24. <dependency>
  25. <groupId>org.projectlombok</groupId>
  26. <artifactId>lombok</artifactId>
  27. <version>${org.projectlombok.version}</version>
  28. <scope>provided</scope>
  29. </dependency>
  30. </dependencies>

接口类

  1. /**
  2. * @author UnityAlvin
  3. * @date 2021/9/28 18:57
  4. */
  5. @Mapper(componentModel = "spring")
  6. public interface BusinessCovertBasic {
  7. BusinessCovertBasic INSTANCE = Mappers.getMapper(BusinessCovertBasic.class);
  8. // 手动设置某个值:expression中,不包含的类需要具体到包名
  9. @Mappings({
  10. // LocalDateTime转Date
  11. @Mapping(target = "createTime",
  12. expression = "java(java.util.Date.from(omsOrder.getCreateTime()" +
  13. ".atZone(java.time.ZoneId.systemDefault()).toInstant()))"),
  14. // 时间戳转Date
  15. @Mapping(target = "validDate", expression = "java(new java.util.Date(omsOrder.getValidDate()))"),
  16. // 单位为分的金额转单位为元
  17. @Mapping(target = "refundFee",
  18. expression = "java(new java.math.BigDecimal(omsOrder.getRefundFee())" +
  19. ".divide(new java.math.BigDecimal(100), 2, java.math.BigDecimal.ROUND_HALF_UP))"),
  20. // 对象/List转JSON
  21. @Mapping(target = "baseInfo",
  22. expression = "java(com.alibaba.fastjson.JSON.toJSONString(omsOrder.getBaseInfo()))"),
  23. // 直接为某个字段赋具体值
  24. @Mapping(target = "orderNoteChangeFlag", expression = "java(0)")
  25. })
  26. OmsOrderSimpleResponse orderToOmsOrderSimpleResponse(OmsOrder omsOrder);
  27. // 将原有source列的值转换到target列上
  28. @Mappings({
  29. @Mapping(source="id", target="mchId")
  30. })
  31. OmsOrderItemView orderItemToOrderItemView(OmsOrderItem orderItem);
  32. // 忽略某个字段的映射
  33. // 方式2:注解
  34. // https://blog.csdn.net/zyw61483/article/details/112990760
  35. @Mappings({
  36. @Mapping(target="mchId", ignore=true)
  37. })
  38. OmsOrderItemView orderItemToOrderItemView(OmsOrderItem orderItem);
  39. }