MapStruct快速入门 | Baeldung

在本文中,我们将探讨 MapStruct
的使用, 简而言之
就是Java Bean映射器。

API包含可在两个Java Bean之间自动映射的功能。使用MapStruct,我们只需要创建接口,该库将在编译时自动创建具体的实现。

对于大多数应用程序,您会注意到很多将POJO转换为其他POJO的样板代码

例如,一种常见的转换类型发生在持久性支持的实体和发往客户端的DTO之间。

这就是MapStruct解决的问题–手动创建bean映射器非常耗时。该库可以自动生成bean映射器类。

让我们将以下依赖项添加到我们的Maven pom.xml中:

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-jdk8</artifactId>
    <version>1.3.0.Beta2</version> 
</dependency>

让我们还将批注处理程序路径添加到maven-compiler-plugin插件配置部分。这里所述mapstruct处理器用于生成在生成过程中映射器实现:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>1.3.0.Beta2</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>

映射到DTO对象

源实体:

<b>public</b> <b>class</b> Employee {
    <b>private</b> String firstName;
    <b>private</b> String lastName;
 
    <font><i>// constructor, getters and setters</i></font><font>
}
</font>

DTO目标:

<b>public</b> <b>class</b> EmployeeDTO {
 
    <b>private</b> String firstName;
    <b>private</b> String lastName;
 
    <font><i>// getters and setters</i></font><font>
}
</font>

映射器:

@Mapper
<b>public</b> <b>interface</b> EmployeeMapper {
    List<EmployeeDTO> map(List<Employee> employees);
}

这里是将Employee的集合转换为EmployeeDTO的集合类型,如果是两个对象类型直接转更方便。

注意,我们没有为EmployeeMapper 创建实现类-因为MapStruct为我们创建了它。

我们可以通过执行mvn clean install来触发MapStruct处理。输出结果在/target/generated-sources/annotations/目录下。

看看MapStruct 帮我们自动生成的EmployeeMapper 接口实现代码如下:

<b>public</b> <b>class</b> EmployeeMapperImpl implements EmployeeMapper {
 
    @Override
    <b>public</b> List<EmployeeDTO> map(List<Employee> employees) {
        <b>if</b> (employees == <b>null</b>) {
            <b>return</b> <b>null</b>;
        }
 
        List<EmployeeDTO> list = <b>new</b> ArrayList<EmployeeDTO>(employees.size());
        <b>for</b> (Employee employee : employees) {
            list.add(employeeToEmployeeDTO(employee));
        }
 
        <b>return</b> list;
    }
 
    <b>protected</b> EmployeeDTO employeeToEmployeeDTO(Employee employee) {
        <b>if</b> (employee == <b>null</b>) {
            <b>return</b> <b>null</b>;
        }
 
        EmployeeDTO employeeDTO = <b>new</b> EmployeeDTO();
 
        employeeDTO.setFirstName(employee.getFirstName());
        employeeDTO.setLastName(employee.getLastName());
 
        <b>return</b> employeeDTO;
    }
}

更详细的转换点击标题见原文。

原文 

https://www.jdon.com/54544

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » MapStruct快速入门 | Baeldung

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址