Java Spring: 使用方法而不是属性的自动 EntityToDTO 映射
Java Spring: automatic EntityToDTO mapping using a method instead of an attribute
在 Spring 中,实体和 DTO 之间有这种很好的自动转换:
@Mapping(source = "senderId", target = "senderId")
@Mapping(source = "text", target = "text")
MessageGetDTO convertEntityToMessageGetDTO(Message message);
这里我们将服务器的消息实体的内部表示转换为将发送给客户端的相应 DTO。
现在假设我们希望 DTO 具有与实体不同的(相关)数据:我们不想向客户端显示发件人的 ID,而是希望将发件人的姓名作为字符串发送。
Message 实体没有发件人的姓名,但一个简单的方法可以使用 senderId 从数据库中获取该姓名。
所以这是我的问题:如何使这些自动映射之一使用方法而不是属性?
@Mapping(source = "getSenderName()", target = "senderName")
^
我想你是在找表情。
它将是:
@Mapping( target = "senderName", expression = "java(getSenderName())" )
更多帮助:https://www.tutorialspoint.com/mapstruct/mapstruct_using_expression.htm
在 Spring 中,实体和 DTO 之间有这种很好的自动转换:
@Mapping(source = "senderId", target = "senderId")
@Mapping(source = "text", target = "text")
MessageGetDTO convertEntityToMessageGetDTO(Message message);
这里我们将服务器的消息实体的内部表示转换为将发送给客户端的相应 DTO。
现在假设我们希望 DTO 具有与实体不同的(相关)数据:我们不想向客户端显示发件人的 ID,而是希望将发件人的姓名作为字符串发送。
Message 实体没有发件人的姓名,但一个简单的方法可以使用 senderId 从数据库中获取该姓名。
所以这是我的问题:如何使这些自动映射之一使用方法而不是属性?
@Mapping(source = "getSenderName()", target = "senderName")
^
我想你是在找表情。
它将是:
@Mapping( target = "senderName", expression = "java(getSenderName())" )
更多帮助:https://www.tutorialspoint.com/mapstruct/mapstruct_using_expression.htm