# mapstruct-plus
**Repository Path**: code_yuan/mapstruct-plus
## Basic Information
- **Project Name**: mapstruct-plus
- **Description**: Mapstruct增强版,一个注解即可实现自动转换,且具有多种增强特性
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: https://mapstruct.plus
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 58
- **Created**: 2023-06-20
- **Last Updated**: 2023-07-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# mapstruct-plus
## 这是什么?
Mapstruct Plus 是对 Mapstruct 框架的一个增强,只做增强,不做修改,可以通过一个注解,自动生成两个类之间的转换操作,省略了 Mapstruct 定义接口的操作,使 Java 类型转换更加便捷、优雅。
目标:做最简单、最强大的类型转换工具
**如果该项目帮助了您,希望能点个 Star 鼓励一下!**
## 链接
- [Document](https://mapstruct.plus)
- [Document 国内站点](https://easii.gitee.io/mapstruct-plus/)
- [Mapstruct](https://mapstruct.org)
- [Gitee](https://gitee.com/linpeilie/mapstruct-plus)
- [Github](https://github.com/linpeilie/mapstruct-plus)
- [彻底干掉 BeanUtils,最优雅的 Mapstruct 增强工具全新出炉](https://juejin.cn/post/7204307381688909882)
## 个人主页
- [代码笔耕](https://easii.gitee.io/)
## 其他开源项目
- **EasyRelation**:[GitHub](https://github.com/linpeilie/easy-relation) | [Gitee](https://gitee.com/easii/easy-relation) | [Document](https://easy-relation.easii.cn)
## 快速开始
下面演示如何使用 MapStruct Plus 来映射两个对象。
假设有两个类 `UserDto` 和 `User`,分别表示数据层对象和业务层对象:
- `UserDto`
```java
public class UserDto {
private String username;
private int age;
private boolean young;
// getter、setter、toString、equals、hashCode
}
```
- `User`
```java
public class User {
private String username;
private int age;
private boolean young;
// getter、setter、toString、equals、hashCode
}
```
### 添加依赖
引入 `mapstruct-plus-spring-boot-starter` 依赖:
```xml
1.3.4
io.github.linpeilie
mapstruct-plus-spring-boot-starter
${mapstruct-plus.version}
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
1.8
1.8
io.github.linpeilie
mapstruct-plus-processor
${mapstruct-plus.version}
```
### 指定对象映射关系
在 `User` 或者 `UserDto` 上面增加注解 —— `@AutoMapper`,并设置 `targetType` 为对方类。
例如:
```java
@AutoMapper(target = UserDto.class)
public class User {
// ...
}
```
### 测试
```java
@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();
}
}
```
### 小结
引入依赖后,使用 Mapstruct Plus 步骤非常简单。
1. 给需要转换的类添加 `AutoMapper` 注解
2. 获取 `Converter` 实例,调用 `convert` 方法即可
## 联系我
> 个人网站:[代码笔耕](https://easii.gitee.io)
> vx : Clue8a796d01

> 公众号:**代码笔耕**
