在使用MapStruct对继承类型的转换时,可以通过使用@Mapper注解中的'uses'属性来指定实现转换的类。在实现类中,需要使用@Mapping注解来指定每个属性的转换规则。

例如,假设有以下两个类:

public class Source {
    private String name;
    // getters/setters
}

public class Target {
    private String name;
    // getters/setters
}

public class SubSource extends Source {
    private String subName;
    // getters/setters
}

public class SubTarget extends Target {
    private String subName;
    // getters/setters
}

要将SubSource转换为SubTarget,可以创建一个名为SubMapper的Mapper类,并在@Mapper注解的'uses'属性中指定SubMapper:

@Mapper(uses = SubMapper.class)
public interface SubMapper {
    @Mapping(source = 'subName', target = 'subName')
    SubTarget subSourceToSubTarget(SubSource subSource);
}

@Mapper
public interface ParentMapper {
    @Mapping(source = 'name', target = 'name')
    Target sourceToTarget(Source source);
    
    SubTarget subSourceToSubTarget(SubSource subSource);
}

这样,在调用ParentMapper.subSourceToSubTarget()方法时,MapStruct将会自动调用SubMapper.subSourceToSubTarget()方法来转换SubSource到SubTarget。

使用MapStruct转换继承类型:详细指南

原文地址: https://www.cveoy.top/t/topic/oLVA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录