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配置为忽略字段的大小写并自动映射它们
不确定是否可以将mapstruct配置为不区分大小写,但始终可以像这样定义要映射的内容:
@Mapping(source = "ID", target = "id")
CustomerDetails toCustomerDetails(Customer customer);
可以实现一个自定义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 );
}
}