3.2Adding custom methods to mappers(在映射器中添加自定义方法)

Posted Autumn trousers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.2Adding custom methods to mappers(在映射器中添加自定义方法)相关的知识,希望对你有一定的参考价值。

3.2Adding custom methods to mappers(在映射器中添加自定义方法)

有些情况下,我们需要实现一些MapStruct无法直接自动生成的复杂类型间映射。一种方式是复用其他已实现的映射。或者,在使用java8或者更高版本的时候,可以直接在映射器接口中实现自定义方法作为默认方法,如果参数和返回类型匹配, 生成的代码将调用默认方法。

举个例子,加入我们要把Person映射成PersonDto,因为涉及到一些特殊的逻辑,MapStruct无法直接将映射代码生成,您可以从前面的示例中定义映射器, 如下所示:

Example 8. Mapper which defines a custom mapping with a default method

@Mapper
public interface CarMapper {

    @Mappings({...})
    CarDto carToCarDto(Car car);

    default PersonDto personToPersonDto(Person person) {
        //hand-written mapping logic
    }
}

由 MapStruct 生成的实现方法 carToCarDto (),在映射【司机】属性时, carToCarDto () 中生成的代码将调用手动实现的 personToPersonDto () 方法。

映射程序还可以以抽象类的形式而不是接口来定义, 并直接在该映射器类中实现自定义方法。在这种情况下, MapStruct 将生成具有所有抽象方法实现的抽象类的扩展。此方法在声明默认方法方面的优点是可以在映射器类中声明其他字段。

前面的示例中, 从Person到 PersonDto 的映射需要一些特殊的逻辑, 同样可以这样定义:

Example 9. Mapper defined by an abstract class

@Mapper
public abstract class CarMapper {

    @Mappings(...)
    public abstract CarDto carToCarDto(Car car);

    public PersonDto personToPersonDto(Person person) {
        //hand-written mapping logic
    }
}

MapStruct 将生成 CarMapper 的子类, 并在声明为抽象的情况下实现 carToCarDto () 方法。在映射【司机】属性时, carToCarDto () 中生成的代码将调用手动实现的 personToPersonDto () 方法。

以上是关于3.2Adding custom methods to mappers(在映射器中添加自定义方法)的主要内容,如果未能解决你的问题,请参考以下文章

-002Adding jQuery object methods

Less(32)GET - Bypass custom filter adding slashes to dangerous chars

sqli-labs less32 GET- Bypass custom filter adding slashes to dangrous chars (GET型转义了'/"字符(代

ue4 material custom node - global function and method

向字段添加“帮助”消息

3.2 6.5-6.7听课笔记