---
title: 快速开始
order: 3
category:
- 介绍
tag:
- 快速开始
description: MapStructPlus 快速开始教程 quick start
---
下面演示如何使用 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
}
```
## 非 SpringBoot 环境
### 添加依赖
引入 `mapstruct-plus` 依赖:
#### Maven
```xml
最新版本
io.github.linpeilie
mapstruct-plus
{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}
```
#### Gradle
```groovy
dependencies {
implementation group: 'io.github.linpeilie', name: 'mapstruct-plus', version: ${mapstruct-plus.version}
annotationProcessor group: 'io.github.linpeilie', name: 'mapstruct-plus-processor', version: ${mapstruct-plus.version}
}
```
### 添加配置类
在 Bean 对象所在模块包中,任意类上增加注解:`@ComponentModelConfig(componentModel = "default")`
例如:
```java
@ComponentModelConfig(componentModel = "default")
public class MapperConfiguration {
}
```
### 指定对象映射关系
在 `User` 或者 `UserDto` 上面增加注解 —— `@AutoMapper`,并设置 `targetType` 为对方类。
例如:
```java
@AutoMapper(target = UserDto.class)
public class User {
// ...
}
```
### 测试
```java
public class QuickStart {
private static Converter converter = new Converter();
public static void main(String[] args) {
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();
}
}
```
## SpringBoot 环境
### 添加依赖
引入 `mapstruct-plus-spring-boot-starter` 依赖:
#### Maven
```xml
最新版本
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}
```
#### Gradle
```groovy
dependencies {
implementation group: 'io.github.linpeilie', name: 'mapstruct-plus-spring-boot-starter', version: ${mapstruct-plus.version}
annotationProcessor group: 'io.github.linpeilie', name: 'mapstruct-plus-processor', version: ${mapstruct-plus.version}
}
```
### 指定对象映射关系
同非 SpringBoot 环境
### 测试
```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();
}
}
```
## Solon
:::info
since `1.2.5`
:::
### 添加依赖
引入 `mapstruct-plu-solon-plugin` 依赖
> `mapstruct-plu-solon-plugin` 已添加到 `solon-parent` 依赖管理中,最新版本可以到 [solon-plugins](https://gitee.com/dromara/solon-plugins) 中查看
```xml
org.dromara.solon-plugins
mapstruct-plus-solon-plugins
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
${java.version}
${java.version}
io.github.linpeilie
mapstruct-plus-processor
${mapstruct-plus.version}
-Amapstruct.defaultComponentModel=solon
```
### 指定对象映射关系
同非 SpringBoot 环境
### 测试
```java
@SolonTest(DemoApp.class)
@ExtendWith(SolonJUnit5Extension.class)
public class QuickStartTest {
@Inject
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` 方法即可