当前位置: 首页 > 知识库问答 >
问题:

如何用MapStruct转换一个接口?

蔚楷
2023-03-14

我在mapStruct文档中做了一些研究,但没有找到或理解我可以做什么来实现这一点:包含平面DTO对象接口的实体的对话。

此处为具有该属性的实体:

public class Group {
    ...

    private IUser user;

    ...
}

这里是DTO:

public GroupDTO {

    private Long idUser;

    private String username;
}

我们尝试这种映射:

@Mappings({
        @Mapping(source = "user.id", target = "idUser"),
        @Mapping(source = "user.name", target = "username")})
GroupDTO toDTO(Group entity);

使用经典映射,mapSTRt会生成错误(IUser是抽象的;无法实例化)。

任何想法?谢谢。

共有3个答案

季稳
2023-03-14

嗨,我正在使用地图结构版本:1.3.1.最终,我从界面映射到dto很容易:

@Mapper(componentModel = "spring")
public interface OrderSummeryMapper {
    AllocatedOrderSummeryResponse toOrderSummery (AllocatedOrderSummery orderSummery);
}

我的dto:

@Data //lombok annotation
@NoArgsConstructor
@AllArgsConstructor
public class AllocatedOrderSummeryResponse implements Serializable {
     Integer customerId;
     String deliveryCategory;
}

接口:

public interface AllocatedOrderSummery {

    Integer getCustomerId();
    String getDeliveryCategory();
}
洪浩
2023-03-14

它应该使用对象工厂方法:

public IUser createIUser() {
    return new User();
}

如果需要< code>IUser的实例,将调用此工厂方法。

贲永思
2023-03-14

不确定这是最好的方法...

但是我们使用@AfterMap在默认方法中手动创建要在接口上实现的对象。

为了进行反向操作,我们必须删除@ InheritInverseConfiguration。

 类似资料:
  • 我的 Spring Boot 应用程序中有 实体。它具有字段 ,其中包含: 对于我我有,字段称为。问题是:如何使用将字符串字段转换为中的Map?

  • null 我试图用另一个话题来做这件事,但对我来说不起作用。 这是我的mapstruct接口: 这是我的服务班: @SpringBootTest(classes={servicerisqueimpl.class,risqueboconvertisseurimpl.class,risqueboconvertisseur.class})公共类ServiceRisqueImplTest{ junit返回

  • 我将公钥存储在接口{}类型的变量中 有没有办法,我可以把它转换成rsa类型。golang的公钥。它可能涉及一些中间步骤,如首先将接口{}转换为字符串。

  • 问题内容: 我有一个包含两个类的元素,一个叫做“ rotate”,它将旋转元素360度,另一个叫做“ doublesize”,它将元素放大两倍于其正常大小: 我猜这是行不通的,因为这些类会覆盖彼此的属性? 我知道我可以很容易地在一条CSS规则中做到这一点,例如: 但是我希望能够在可能的情况下分别应用每个类。 问题答案: 我猜这是行不通的,因为这些类会覆盖彼此的属性? 正确。作为级联工作方式的副作用

  • 如何转换来自JavaScript的日期格式: 这些格式不起作用 日期要追溯到1969年 有什么见解吗?

  • 我的spring应用程序中有一个功能有问题。我在同一个数据库中有两个表,它们都包含相同类型的数据(id、标题、描述和日期)。我可以从一个表中获取数据,但不知道如何插入到第二个表中。 在我的@服务层中,我可以从表A中获取数据。但不知道如何转换为另一个类对象(两个类都包含samne数据) 注入JPA储备 还有从表A获取对象的代码(TasksRepository-JpaRepository)