MapStruct 支持范型转换,转换过程与普通类型转换相似。下面是一个示例:

假设我们有两个类:

public class Source<T> {
    private T value;
    // getter, setter
}

public class Target<T> {
    private T value;
    // getter, setter
}

现在我们想要使用 MapStruct 将 Source 转换为 Target:

@Mapper
public interface MyMapper {

    <T> Target<T> sourceToTarget(Source<T> source);

    <T> Source<T> targetToSource(Target<T> target);

}

在这个接口中,我们定义了两个泛型方法。'sourceToTarget' 方法将 Source 转换为 Target,而 'targetToSource' 方法则将 Target 转换为 Source。在这两个方法中,我们使用了泛型类型 '' 来表示 Source 和 Target 中的值类型。

在实际使用时,我们可以这样调用这些方法:

MyMapper mapper = Mappers.getMapper(MyMapper.class);

Source<Integer> source = new Source<>();
source.setValue(123);

Target<Integer> target = mapper.sourceToTarget(source);

System.out.println(target.getValue()); // 输出 123

Source<Integer> source2 = mapper.targetToSource(target);

System.out.println(source2.getValue()); // 输出 123

在这个示例中,我们首先创建了一个 Source 对象,并将其值设置为 123。然后,我们使用 'sourceToTarget' 方法将其转换为 Target 对象,并将转换后的对象打印出来。接着,我们使用 'targetToSource' 方法将 Target 对象转换回 Source 对象,并将转换后的对象打印出来。

需要注意的是,在这个示例中,我们使用了两个泛型方法来实现 Source 和 Target 的转换。如果我们只需要转换特定类型的 Source 和 Target,我们可以将泛型类型指定为具体类型,例如:

@Mapper
public interface MyMapper {

    Target<String> sourceToStringTarget(Source<String> source);

    Source<Integer> targetToIntegerSource(Target<Integer> target);

}

在这个示例中,我们将泛型类型 '' 指定为 String 和 Integer,分别实现了将 Source 转换为 Target 和将 Target 转换为 Source 的方法。

MapStruct 泛型转换:示例和最佳实践

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

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