MapStruct设置全局的ComponentModel

在mapStruct上边,如果我们要切换成非默认的组件模式,常常要在@Mapper注释中添加componentModel = "spring",如果类太多的了的话,非常麻烦,有没有更好的方式呢,有的,可以在pom中添加一个编译参数,这样就不用每个Mapper注解添加componentModel属性了

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>xxx</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <annotationProcessorPaths>

            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>xxx</version>
            </path>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>xxx</version>
            </path>

        </annotationProcessorPaths>
        <compilerArgs>
            <compilerArg>
                -Amapstruct.defaultComponentModel=spring
            </compilerArg>
        </compilerArgs>
    </configuration>
</plugin>

要在 MapStruct全局设置默认值,可以使用 MapStruct 提供的 `@MappingTarget` 注解和自定义的转换方法来实现。 首先,在你的 MapStruct 接口中创建一个转换方法,该方法用于将源对象的属性值映射到目标对象。在这个方法中,你可以使用 `@MappingTarget` 注解来获取目标对象,并在需要时为其属性设置默认值。例如: ```java @Mapper public interface MyMapper { @Mapping(target = "propertyName", source = "sourceName") void updateTargetFromSource(Source source, @MappingTarget Target target); } ``` 在上面的例子中,`propertyName` 是目标对象的属性名称,sourceName` 是源对象的属性名称。`updateTargetFromSource` 方法将会从源对象中获取 `sourceName` 属性的值,并将其映射到目标对象的 `propertyName` 属性上。 接下来,在你的自定义转换方法中,你可以检查属性值是否为 null,并为其设置默认值。例如: ```java @Mapper public interface MyMapper { @Mapping(target = "propertyName", source = "sourceName") void updateTargetFromSource(Source source, @MappingTarget Target target); default String defaultStringValue(String value) { return value != null ? value : "Default Value"; } } ``` 在上面的例子中,`defaultStringValue` 方法是一个自定义的转换方法,于将字符串属性的值转换为默认值。如果传入的值为 null,则返回默认值 "Default Value"。 最后,你可以在你的转换方法中调用自定义转换方法来设置属性的默认值。例如: ```java @Mapper public interface MyMapper { @Mapping(target = "propertyName", source = "sourceName", defaultValue = "Default Value") void updateTargetFromSource(Source source, @MappingTarget Target target); default String defaultStringValue(String value) { return value != null ? value : "Default Value"; } } ``` 在上面的例子中,通过在 `@Mapping` 注解中使用 `defaultValue` 属性,你可以直接设置属性的默认值为 "Default Value"。 通过以上步骤,你可以在 MapStruct全局设置默认值。请根据你的需求进行相应的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值