MapStruct学习笔记

DTO就是做数据传输对象的,类似于VO,但是VO用于传输到前端。

通用的方式是需要用到的属性封装成一个类(DTO),通过传输这个类的实例来完成数据传输。

需要数据库字段到DTO做一个映射
 

import org.mapstruct.Mapping;

/**
 * Mapper for the entity {@link QRequest} and its DTO {@link NewCustomerRequestDTO}.
 */
@Mapper(componentModel = "spring", uses = {BooleanStrFormat.class})
public interface QequestMapper extends EntityMapper<QquestDTO, QRequest> {


    @Mapping(source = "quote.id", target = "quoteId")
    QquestDTO toDto(QRequest q);

    @Mapping(source = "quoteId", target = "quote")
    QRequesttoEntity(QquestDTOqDTO);

    default QRequestfromId(String id) {
        if (id == null) {
            return null;
        }
        QRequest q= new QRequest();
        q.setId(id);
        return  q;
    }
}

@Mapper(componentModel = “spring”),表示把当前Mapper类纳入spring容器。可以在其它类中直接注入了

@Mapper( uses = { BooleanStrFormat.class}),注意,这里的users属性用于引用之前定义的转换规则的类

编译后会自动生成实现类

编译生成的类如下:

其实生成的是一个转换类,我们一般不使用MapStruct的话是在domain中写的 和这个一样

@Override
public QquestDTO toDto(QRequest qRequest) {
    if ( newCustomer == null ) {
        return null;
    }

    QquestDTO qquestDTO= new QquestDTO();

   
    qquestDTO.setType( qRequest.getType() );
    qquestDTO.setState( qRequest.getState() );
    qquestDTO.setTicketSource( qRequest.getTicketSource() );


    return qquestDTO;
}

 


版权声明:本文为fwk19840301原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。