Mapstruct不区分大小写的映射

问题描述 投票:0回答:2

mapstruct中有一种方法可以在映射时忽略字段的大小写。假设我要映射以下两个类

public class Customer {

    private String ID;

    public String getID() {
        return ID;
    }

    public void setID(String iD) {
        this.ID = iD;
    }
}


public class CustomerDetails {

    private String id;

    public String getId() {
        return ID;
    }

    public void setId(String id) {
        this.id = id;
    }

}

MapStruct不会自动映射字段,因为getter方法名称不匹配。有没有一种方法可以将MapStruct配置为忽略字段的大小写并自动映射它们

java mapstruct object-object-mapping
2个回答
1
投票

不确定是否可以将mapstruct配置为不区分大小写,但始终可以像这样定义要映射的内容:

@Mapping(source = "ID", target = "id")
CustomerDetails toCustomerDetails(Customer customer);

0
投票

可以实现一个自定义AccessorNamingStrategy,它将小写元素名称,从而使其不区分大小写。

例如

public class CaseInsensitiveAccessorNamingStrategy extends DefaultAccessorNamingStrategy {

    @Override
    public String getPropertyName(ExecutableElement getterOrSetterMethod) {
        return super.getPropertyName( getterOrSetterMethod ).toLowerCase( Locale.ROOT );
    }

    @Override
    public String getElementName(ExecutableElement adderMethod) {
        return super.getElementName( adderMethod ).toLowerCase( Locale.ROOT );
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.