本文共 1678 字,大约阅读时间需要 5 分钟。
在 MapStruct 中,如果你想在映射过程中忽略某个字段,可以使用 @Mapping 注解的 ignore 属性。将 ignore 设置为 true,可以告诉 MapStruct 在映射时忽略该字段。
以下是一个简单示例,展示如何在 MapStruct 映射中忽略字段:
假设我们有两个类, Source(对应数据库表的实体)和 Target(对应返回前端的实体),并且我们只想映射部分字段,忽略 Source 类中的 ignoreMe 字段。
public class Source { private String includeMe; private String ignoreMe; // Getters and setters public String getIncludeMe() { return includeMe; } public void setIncludeMe(String includeMe) { this.includeMe = includeMe; } public String getIgnoreMe() { return ignoreMe; } public void setIgnoreMe(String ignoreMe) { this.ignoreMe = ignoreMe; }}public class Target { private String includeMe; // Getters and setters public String getIncludeMe() { return includeMe; } public void setIncludeMe(String includeMe) { this.includeMe = includeMe; }}
在映射接口中,使用 @Mapping 注解来指定映射规则,并忽略 ignoreMe 字段。
import org.mapstruct.Mapper;import org.mapstruct.Mapping;import org.mapstruct.factory.Mappers;@Mapperpublic interface MyMapper { MyMapper INSTANCE = Mappers.getMapper(MyMapper.class); @Mapping(source = "includeMe", target = "includeMe") @Mapping(target = "ignoreMe", ignore = true) // 忽略 ignoreMe 字段 Target sourceToTarget(Source source);}
现在你可以在代码中使用 MyMapper 接口来执行映射,ignoreMe 字段将被忽略。
public class Main { public static void main(String[] args) { Source source = new Source(); source.setIncludeMe("Hello"); source.setIgnoreMe("Should be ignored"); Target target = MyMapper.INSTANCE.sourceToTarget(source); System.out.println(target.getIncludeMe()); // 输出 "Hello" // ignoreMe 字段的值不会被设置 }}
通过这种方式,MapStruct 会自动生成实现类,在执行映射时忽略指定的字段。这种方法简单且高效,不需要手动编写额外的映射逻辑。
转载地址:http://dgufk.baihongyu.com/