mapstruct-plus/docs/guide/configuration.md
linpeilie 95e87c3a3a release 1.3.0
- 解决本地开发时 IDEA 编译或者运行时报错等与预期不一致的问题
2023-06-16 17:55:13 +08:00

168 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 配置项
order: 6
category:
- 指南
description: MapStructPlus MapStructPlus配置项 configuration
---
MapStructPlus 提供了多个配置项,来指定生成转换接口时的一些行为。
## 使用方式
在需要进行配置的模块中,新建配置类,在该类上面增加注解:`@MapperConfig`**在一个模块中,只能有一个有该注解的类**。
同时,还要注意**配置类一定要放在要生效的模块中**
例如:
```java
@MapperConfig(adapterClassName = "DemoConvertMapperAdapter",
adapterPackage = "io.github.linpeilie.adapter",
mapAdapterClassName = "DemoMapConvertMapperAdapter")
public class MapStructPlusConfiguration {
}
```
-------------------------------------------------------------------
除此之外,配置属性还支持**增加编译参数**的方式,以 `-Akey=value` 的形式,传递给编译器。
例如,使用 Maven 时,可以在 `maven-compiler-plugin` 插件配置中,使用 `compilerArgs` 属性来配置传递,例如:
**且使用该方式配置优先级更高**,即,当该方式和配置类同时存在时,以该方式配置的属性为准。该功能从 `1.3.0` 开始支持。
:::warning
**建议使用该方式来配置因为本地开发时修改类时IDEA 会只对修改的类进行部分编译,无法获取到配置类,所以可能会出现与预想编译结果不同的问题,但执行 mvn clean package 又变为正常**
:::
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>io.github.linpeilie</groupId>
<artifactId>mapstruct-plus-processor</artifactId>
<version>${mapstruct-plus.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</path>
</annotationProcessorPaths>
<compilerArgs>
<arg>-Amapstruct.plus.mapperPackage=com.tutelary.mapper</arg>
<arg>-Amapstruct.plus.adapterClassName=DemoConvertMapperAdapter1</arg>
<arg>-Amapstruct.plus.adapterPackage=io.github.linpeilie.adapter</arg>
<arg>-Amapstruct.plus.mapAdapterClassName=DemoMapConvertMapperAdapter</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
```
## 配置项
### mapperPackage
- **说明**:生成的 Mapper 转换接口的包名
- **类型**`String`
- **默认值**:默认生成在要转换的类同包名下
- **对应编译参数**`-Amapstruct.plus.mapperPackage`
### unmappedSourcePolicy
- **说明**:当来源类中没有对应属性时的策略,默认忽略
- **类型**`ReportingPolicy`
- **可选项**
- `IGNORE`:忽略
- `WARN`:打印警告日志
- `ERROR`:抛出异常
- **默认值**`IGNORE`
- **对应编译参数**`mapstruct.plus.unmappedSourcePolicy`
### unmappedTargetPolicy
- **说明**:当目标类中没有对应属性时的策略,默认忽略
- **类型**`ReportingPolicy`
- **可选项**
- `IGNORE`:忽略
- `WARN`:打印警告日志
- `ERROR`:抛出异常
- **默认值**`IGNORE`
- **对应编译参数**`mapstruct.plus.unmappedTargetPolicy`
### nullValueMappingStrategy
- **说明**:空值对象处理策略,默认返回空值
- **类型**`NullValueMappingStrategy`
- **可选项**
- `RETURN_NULL`:返回空值
- `RETURN_DEFAULT`:返回默认值
- **默认值**`RETURN_NULL`
- **对应编译参数**`mapstruct.plus.nullValueMappingStrategy`
### nullValuePropertyMappingStrategy
- **说明**:当属性值为 `null` 时应对的策略,默认设置 `null`
- **类型**`NullValuePropertyMappingStrategy`
- **可选项**
- `SET_TO_NULL`:设置为 `null`
- `SET_TO_DEFAULT`:设置为默认值
- `IGNORE`:忽略
- **默认值**`SET_TO_NULL`
- **对应编译参数**`mapstruct.plus.nullValuePropertyMappingStrategy`
### builder
- **说明**构造者模式配置MapStruct 与 lombok 的 builder 一起使用时,会丢失父类属性,所以这里将默认使用构造者模式关闭
- **类型**`Builder`
- **支持配置项**
- `buildMethod`:构造器创建要构建类型时的构造方法
- `disableBuilder`:打开/关闭构造器,如果关闭,则只使用常规的 getters/setters
- **默认值**
- `buildMethod``build`
- `disableBuilder``true`
- **分别对应的编译参数**
- `mapstruct.plus.builder.buildMethod`
- `mapstruct.plus.builder.disableBuilder`
### adapterPackage
> since `1.2.3`
- **说明**ConvertAdapterClass 和 MapConvertMapperAdapter 的包名
- **类型**`String`
- **默认值**io.github.linpeilie
- **对应编译参数**`mapstruct.plus.adapterPackage`
### adapterClassName
> since `1.2.3`
- **说明**ConvertAdapterClass 类名
- **类型**`String`
- **默认值**ConvertMapperAdapter
- **对应编译参数**`mapstruct.plus.adapterClassName`
### mapAdapterClassName
> since `1.2.3`
- **说明**MapConvertMapperAdapter 类名
- **类型**`String`
- **默认值**MapConvertMapperAdapter
- **对应编译参数**`mapstruct.plus.mapAdapterClassName`