美文网首页
mapstruct 用于实体间的转换

mapstruct 用于实体间的转换

作者: mibro | 来源:发表于2018-04-05 23:17 被阅读0次

代码样例

@Mapper(componentModel = "spring")
public interface SellerReviewDTOConverter {
    @Mappings({
            @Mapping(source = "reviewRateId", target = "id"),
            @Mapping(source = "reviewContent", target = "detail"),
            @Mapping(source = "zonedReviewTime", target = "createdAt", dateFormat = "yyyy-MM-dd HH:mm:ss"),
            @Mapping(source = "reviewStatus", target = "status"),
            @Mapping(source = "realBuyerName", target = "customerName"),
            @Mapping(source = "buyerId", target = "customerId"),
            @Mapping(source = "tradeOrderId", target = "orderId"),
            @Mapping(source = "zonedBoughtDate", target = "orderTime", dateFormat = "yyyy-MM-dd HH:mm:ss"),
            @Mapping(source = "qcTag", target = "tag"),
            @Mapping(source = "rejectionReason", target = "rejectionReason")
    })
    SellerReviewResponseDTO dto2domain(SellerReviewDTO o);
}

编译结果

@Component
public class SellerReviewCsvDTOConverterImpl implements SellerReviewCsvDTOConverter {
    public SellerReviewCsvDTOConverterImpl() {
    }

    public SellerReviewCsvDTO dto2domain(SellerReviewDTO o) {
        if (o == null) {
            return null;
        } else {
            SellerReviewCsvDTO sellerReviewCsvDTO = new SellerReviewCsvDTO();
            if (o.getZonedReviewTime() != null) {
                sellerReviewCsvDTO.setCreatedAt(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(o.getZonedReviewTime()));
            }

            if (o.getTradeOrderId() != null) {
                sellerReviewCsvDTO.setOrderId(String.valueOf(o.getTradeOrderId()));
            }

            sellerReviewCsvDTO.setCustomerEmail(o.getBuyerEmail());
            sellerReviewCsvDTO.setSellerName(o.getSellerName());
            sellerReviewCsvDTO.setRating(o.getRating());
            sellerReviewCsvDTO.setClient(o.getClientType());
            sellerReviewCsvDTO.setReviewOrigin(o.getSource());
            sellerReviewCsvDTO.setDetail(o.getReviewContent());
            sellerReviewCsvDTO.setRejectionReason(o.getRejectionReason());
            sellerReviewCsvDTO.setCustomerName(o.getRealBuyerName());
            sellerReviewCsvDTO.setStatus(o.getReviewStatus());
            return sellerReviewCsvDTO;
        }
    }
}

@Mapper 注解的 componentModel 属性

用于指定自动生成的接口实现类的组件类型,这个属性支持四个值:

  • default: 这是默认的情况,mapstruct 不使用任何组件类型, 可以通过Mappers.getMapper(Class)方式获取自动生成的实例对象。
  • cdi: the generated mapper is an application-scoped CDI bean and can be retrieved via @Inject
  • spring: 生成的实现类上面会自动添加一个@Component注解,可以通过Spring的 @Autowired方式进行注入
  • jsr330: 生成的实现类上会添加@javax.inject.Named 和@Singleton注解,可以通过 @Inject注解获取

相关文章

  • mapstruct 用于实体间的转换

    代码样例 编译结果 @Mapper 注解的 componentModel 属性 用于指定自动生成的接口实现类的组件...

  • 映射框架MapStruct

    一、MapStruct 开发中,我们经常需要将PO转DTO、DTO转PO等一些实体间的转换。比较出名的有BeanU...

  • mapstruct 和lombok 结合之后mapstruct生

    lombok和mapstruct配合转换bean后,mapstruct生成空的实现. 如果出现mapstruct和...

  • MapStruct

    概述 MapStruct 可以将某几种类型的对象映射为另外一种类型,如将多个 DO(业务实体对象) 对象转换为 D...

  • MapStruct:实体映射

    一、MapStruct作用是什么? 现在有这么个场景,从数据库查询出来了一个user对象(包含id,用户名,密码,...

  • javaBean转换(mapstruct)

    添加依赖(解决lombok与mapstruct的冲突) 构建转换工具(属性对照关系) 调用转换工具

  • 使用@SuperBuilder在MapStruct中报错处理

    问题:使用@SuperBuilder后进行MapStruct转换发生错误,一些字段无法识别 : 1、对无法转换的字...

  • 手把手教你MarkDown写作

    符号用于起始标签。&符号则用于标记 HTML 实体,特殊字符自动转换 Markdown 支持以下这些符号前面加上反...

  • 模型之间相互转换

    使用 MapStruct 1.以maven形式添加 2.举例: UserEntity 转换成UserVO(不包含p...

  • Java 实体映射工具 MapStruct

    在一个成熟的工程中,尤其是现在的分布式系统中,应用与应用之间,还有单独的应用细分模块之后,DO 一般不会让外部依赖...

网友评论

      本文标题:mapstruct 用于实体间的转换

      本文链接:https://www.haomeiwen.com/subject/itqjhftx.html