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