MapStruct 映射过程中忽略某个字段
发布日期:2025-04-12 00:26:16 浏览次数:8 分类:精选文章

本文共 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 会自动生成实现类,在执行映射时忽略指定的字段。这种方法简单且高效,不需要手动编写额外的映射逻辑。

上一篇:MapStruct 超神进阶用法,让你的代码效率提升十倍!
下一篇:MapStruct 对象间属性复制

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年05月11日 06时04分48秒