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版权协议,转载请附上原文出处链接和本声明。