Open isayme opened 2 years ago
<!-- 样例 https://github.com/mapstruct/mapstruct-examples/blob/master/mapstruct-lombok/pom.xml --> <properties> <java.version>1.8</java.version> <!-- mapstruct 版本 --> <org.mapstruct.version>1.4.2.Final</org.mapstruct.version> <!-- lombok 1.18.16 版本之后用 --> <lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version> <!-- lombok 版本 --> <org.projectlombok.verion>1.18.22</org.projectlombok.verion> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 引入 mapstruct --> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>${org.mapstruct.version}</version> </dependency> <!-- 引入 lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${org.projectlombok.verion}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <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> <!-- mapstruct 插件 --> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </path> <!-- lombok 插件 --> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${org.projectlombok.verion}</version> </path> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>${lombok-mapstruct-binding.version}</version> </path> <!-- other annotation processors --> </annotationProcessorPaths> <compilerArgs> <!-- mapstruct 配置,使得定义的 Mapper 可通过 @Resource 注解注入 --> <arg> -Amapstruct.defaultComponentModel=spring </arg> </compilerArgs> </configuration> </plugin> </plugins> </build>
@Data public class Source { private String k; } @Data public class Destination { private String k; } // @Mapper(componentModel = "spring") 如未配置defaultComponentModel=spring,可以在此处配置。 @Mapper public interface Converter { Destination convertToDestination(Source s); }
import static org.junit.Assert.assertEquals; @SpringBootTest class ConverterTest { // 自动注入 @Resource private Converter converter; @Test public test() { Source source = new Source(); source.setK(UUID.randomUUID().toString()); Destination destination = myMapper.to(source); assertEquals(destination.getK(), source.getK()); } }
集成步骤
1. 引入依赖
2. 定义模型及模型转换接口
3. 使用模型转换器
常见场景及解决方案
参考链接