美文网首页
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 用于实体间的转换

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