如何使用模型映射器从实体转换为 dto,从字符串转换为 UUID
How to convert from entity to dto using model mapper , with conversion from string to UUID
我需要一些帮助来使用模型映射器将实体映射到 DTO。
这是我的两个 pojos
@Data
public class ClientDTO {
private UUID id;
@NotNull
private String name;
private String description;
private String contactEmail;
}
@Data
@Entity
public class Client {
@Id
private String id;
@NotNull
private String name;
private String description;
@NotNull
private String contactEmail;
}
当我尝试在 Client 与 ClientDTO 之间进行转换时,id 呈现为 null。我尝试编写一个 PropertyMap 和一个转换器,但其中 none 对我有用。
我仔细阅读了文档并找到了问题的解决方案。这是解决方案。
初始化
private PropertyMap<Client, ClientDTO> clientMap;
private ModelMapper clientToClientDtoMapper;
定义 PropertyMap 和转换器
clientToClientDtoMapper = new ModelMapper();
Converter<Client, UUID> uuidConverter = new AbstractConverter<Client, UUID>() {
protected UUID convert(Client source) {
return UUID.fromString(source.getId());
}
};
clientMap = new PropertyMap<Client, ClientDTO>() {
protected void configure() {
try {
using(uuidConverter).map(source).setId(null);
} catch (Exception ex) {
System.out.println("Error.");
}
}
};
clientToClientDtoMapper.addMappings(clientMap);
从实体转换为 DTO 的辅助方法
private ClientDTO convertToDto(Client client) {
ClientDTO clientDTO = clientToClientDtoMapper.map(client, ClientDTO.class);
return clientDTO;
}
我需要一些帮助来使用模型映射器将实体映射到 DTO。 这是我的两个 pojos
@Data
public class ClientDTO {
private UUID id;
@NotNull
private String name;
private String description;
private String contactEmail;
}
@Data
@Entity
public class Client {
@Id
private String id;
@NotNull
private String name;
private String description;
@NotNull
private String contactEmail;
}
当我尝试在 Client 与 ClientDTO 之间进行转换时,id 呈现为 null。我尝试编写一个 PropertyMap 和一个转换器,但其中 none 对我有用。
我仔细阅读了文档并找到了问题的解决方案。这是解决方案。
初始化
private PropertyMap<Client, ClientDTO> clientMap;
private ModelMapper clientToClientDtoMapper;
定义 PropertyMap 和转换器
clientToClientDtoMapper = new ModelMapper();
Converter<Client, UUID> uuidConverter = new AbstractConverter<Client, UUID>() {
protected UUID convert(Client source) {
return UUID.fromString(source.getId());
}
};
clientMap = new PropertyMap<Client, ClientDTO>() {
protected void configure() {
try {
using(uuidConverter).map(source).setId(null);
} catch (Exception ex) {
System.out.println("Error.");
}
}
};
clientToClientDtoMapper.addMappings(clientMap);
从实体转换为 DTO 的辅助方法
private ClientDTO convertToDto(Client client) {
ClientDTO clientDTO = clientToClientDtoMapper.map(client, ClientDTO.class);
return clientDTO;
}