# mapstruct-plus
## What is MapStruct Plus
MapStruct Plus is an enhancement to the MapStruct framework. It only does the enhancement, does not make the modification, and can automatically generate the transformation operation between two classes through an annotation, omitting the operation of defining the interface of MapStruct, makes Java type conversion easy and elegant.
Goal: To be the simplest and most powerful type conversion tool
**If this project helps you, hope to click a Star to encourage it!**
## Link
- [Document](https://mapstruct.plus)
## Other open source projects
- **EasyRelation**:[GitHub](https://github.com/linpeilie/easy-relation) | [Gitee](https://gitee.com/easii/easy-relation) | [Document](https://easy-relation.easii.cn)
## Quick start
The following shows how to convert two objects using MapStructPlus.
Suppose there are two classes, `UserDto` and `User`, representing the data-layer object and business-layer object, respectively:
- `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
}
```
Introducing `mapstruct-plus-spring-boot-starter` dependencies:
```xml
<properties>
<mapstruct-plus.version>latest version</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>
```
Test
```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();
}
}
```
## Summary
With the introduction of dependencies, the steps to using MapStructPlus are very simple.
1. Add an `AutoMapper` annotation to the class you want to convert
2. Get the `Converter` instance and call the convert method.
--------
## 这是什么?
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
<properties>
<mapstruct-plus.version>1.4.0</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>
```
### 指定对象映射关系
在 `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)
> 微信交流群
![微信交流群](http://cos.easii.cn/wechat_20240315192612.jpg)
> vx : Clue8a796d01
![Clue8a796d01](http://cos.easii.cn/20230609091707.webp)
> 公众号:**代码笔耕**
![代码笔耕](http://cos.easii.cn/qrcode_for_gh_c207b35e04b8_344.webp)
没有合适的资源?快使用搜索试试~ 我知道了~
mapstruct-plus-main.zip
共267个文件
java:202个
md:28个
xml:10个
需积分: 5 1 下载量 106 浏览量
2024-03-24
12:33:16
上传
评论
收藏 612KB ZIP 举报
温馨提示
mapstruct-plus-main
资源推荐
资源详情
资源评论
收起资源包目录
mapstruct-plus-main.zip (267个子文件)
CNAME 14B
.jvm.config 190B
index.css 26B
spring.factories 119B
.gitignore 630B
favicon.ico 4KB
org.springframework.boot.autoconfigure.AutoConfiguration.imports 56B
AutoMapperProcessor.java 40KB
QuickStartTest.java 11KB
AutoMapperGenerator.java 11KB
AbstractAdapterMapperGenerator.java 10KB
AutoMapperProperties.java 5KB
ReverseAutoMapping.java 5KB
MapperConfigGenerator.java 5KB
QuickStartTest.java 5KB
QuickStartTest.java 5KB
QuickStartTest.java 4KB
FileUtils.java 4KB
DefaultConverterFactory.java 4KB
ProcessorOptions.java 3KB
AutoMapping.java 3KB
BuildCollator.java 3KB
Converter.java 3KB
AutoMapperMetadata.java 3KB
AutoEnumMapperGenerator.java 3KB
MapperConfig.java 3KB
ContextConstants.java 3KB
AutoMappingMetadata.java 3KB
User.java 3KB
User.java 3KB
FileWriter.java 3KB
IocAdapterMapperGenerator.java 3KB
StrUtil.java 3KB
AbstractCachedConverterFactory.java 2KB
EmployeeMapperTest.java 2KB
UserVO.java 2KB
UserDto.java 2KB
UserVO.java 2KB
UserDto.java 2KB
MapObjectConvert.java 2KB
FileReader.java 2KB
FileWrapper.java 2KB
AdapterMapMethodMetadata.java 2KB
SpringConverterFactory.java 1KB
AdapterMethodMetadata.java 1KB
Order.java 1KB
DefaultAdapterMapperGenerator.java 1KB
GoodsDto.java 1KB
User.java 1KB
User.java 1KB
SolonComponentProcessor.java 1KB
AutoMapper.java 1KB
ProductMapperTest.java 1KB
OrderVO.java 1KB
CharUtils.java 1KB
BaseCycleAvoidingMapper.java 1KB
CarDto.java 1KB
CarDto.java 1KB
Goods.java 1KB
CycleAvoidingMappingContext.java 1KB
Car.java 1KB
Car.java 1KB
MapModelA.java 1016B
MapModelA.java 1016B
AdapterEnumMethodMetadata.java 992B
Wheel.java 918B
Wheel.java 918B
GoodsDto.java 917B
SpringAdapterMapperGenerator.java 908B
MapstructAutoConfiguration.java 907B
AbstractAdapterMethodMetadata.java 901B
Wheels.java 900B
Wheels.java 880B
Wheels.java 880B
Wheels.java 880B
SolonAdapterMapperGenerator.java 878B
AbstractMapperMetadata.java 846B
AutoEnumMapperMetadata.java 843B
WheelDto.java 841B
WheelDto.java 841B
GoodsDto.java 799B
StartUp.java 794B
CollectionUtils.java 770B
StartUp.java 718B
StartUp.java 718B
Titles.java 706B
QuickStart.java 661B
BaseMapper.java 651B
Goods.java 644B
ArrayUtil.java 628B
SeatConfiguration.java 622B
SeatConfiguration.java 622B
ClassUtil.java 612B
Goods.java 607B
Car.java 569B
UserDto.java 561B
UserDto.java 561B
GoodsStateEnum.java 507B
EnglishRelease.java 505B
TreeNodeAwareMapper.java 503B
共 267 条
- 1
- 2
- 3
资源评论
电子小白的每一天
- 粉丝: 164
- 资源: 37
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功