最简单、最强大的Java Bean转换工具,更加便捷、优雅
一、项目简介最简单最强大的Java Bean转换工具 是 Mapstruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。 二、功能概述MapStruct Plus 是对 MapStruct 框架的一个增强,只做增强,不做修改,可以通过一个注解,自动生成两个类之间的转换操作,省略了 Mapstruct 定义接口的操作,使 Java 类型转换更加便捷、优雅。 目标:做最简单、最强大的类型转换工具 特性快速Java 类之间的转换,仅需要增加一个注解,减少了乏味且容易出错的开发任务 效率基于注解处理器,所有生成工作都在编译期完成 转换属性转换基于类中的 getter/setter 方法 兼容支持JDK8~17、SpringBoot2~3 多类转换支持单个类配置多个类型转换 Map转对象更强大的Map转对象功能 三、技术选型快速开始下面演示如何使用 MapStruct Plus 来映射两个对象。 假设有两个类 UserDto 和 User,分别表示数据层对象和业务层对象: - public class UserDto {
- private String username;
- private int age;
- private boolean young;
- // getter、setter、toString、equals、hashCode
- }
[color=rgb(51, 102, 153) !important]复制代码
- public class User {
- private String username;
- private int age;
- private boolean young;
- // getter、setter、toString、equals、hashCode
- }
[color=rgb(51, 102, 153) !important]复制代码
添加依赖引入
mapstruct-plus-spring-boot-starter 依赖: - <properties>
- <mapstruct-plus.version>1.4.3</mapstruct-plus.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>io.github.linpeilie</groupId>
- <artifactId>mapstruct-plus-spring-boot-starter</artifactId>
- <version>${mapstruct-plus.version}</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.8.1</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- <annotationProcessorPaths>
- <path>
- <groupId>io.github.linpeilie</groupId>
- <artifactId>mapstruct-plus-processor</artifactId>
- <version>${mapstruct-plus.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
[color=rgb(51, 102, 153) !important]复制代码
指定对象映射关系在 User 或者 UserDto 上面增加注解 —— @AutoMapper,并设置 targetType 为对方类。 例如: - @AutoMapper(target = UserDto.class)
- public class User {
- // ...
- }
[color=rgb(51, 102, 153) !important]复制代码
测试
- @SpringBootTest
- public class QuickStartTest {
- @Autowired
- private Converter converter;
- @Test
- public void test() {
- User user = new User();
- user.setUsername("jack");
- user.setAge(23);
- user.setYoung(false);
- UserDto userDto = converter.convert(user, UserDto.class);
- System.out.println(userDto); // UserDto{username='jack', age=23, young=false}
- assert user.getUsername().equals(userDto.getUsername());
- assert user.getAge() == userDto.getAge();
- assert user.isYoung() == userDto.isYoung();
- User newUser = converter.convert(userDto, User.class);
- System.out.println(newUser); // User{username='jack', age=23, young=false}
- assert user.getUsername().equals(newUser.getUsername());
- assert user.getAge() == newUser.getAge();
- assert user.isYoung() == newUser.isYoung();
- }
- }
[color=rgb(51, 102, 153) !important]复制代码
小结引入依赖后,使用步骤非常简单。
以下内容需要积分高于 2 才可浏览
链接:https://pan.baidu.com/s/1vF4vMhFE9ajJmYERWlNF7w
提取码下载:
|