--- title: Quick Start order: 3 category: - Introduction description: MapStructPlus 快速开始教程 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 } ``` ## Non-SpringBoot environment ### add dependencies Introducing `mapstruct-plus` dependencies: #### Maven ```xml latest version 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} } ``` ### add configuration class In the module package where the Bean object resides, add a comment on any class: `@ComponentModelConfig(componentModel = "default")` eg: ```java @ComponentModelConfig(componentModel = "default") public class MapperConfiguration { } ``` ### Specifies the object mapping relationship Add a annotation - `@AutoMapper` above `User` or `UserDto` and set `targetType` to the opposite class. eg: ```java @AutoMapper(target = UserDto.class) public class User { // ... } ``` ### Test ```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 Environment ### Add dependencies Introducing `mapstruct-plus-spring-boot-starter` dependencies: #### Maven ```xml latest version 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} } ``` ### Specifies the object mapping relationship Same as non-SpringBoot environment ### 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(); } } ``` ## Solon :::info since `1.2.5` ::: ### Add dependencies Introducing `mapstruct-plu-solon-plugin` dependencies: > `mapstruct-plus-solon-plugin` has been added to `solon-parent` dependency management, and the latest version can be viewed in [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 ``` ### Specifies the object mapping relationship Same as SpringBoot environment ### Test ```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(); } } ``` ## 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.