我使用Orika Mapper并拥有以下内容:
mapperFactory.classMap(BusinessResource.class, BusinessDto.class)
.field("content._id", "_id")
.field("content.uuid", "uuid")
.field("content.created", "created")
.field("content.name", "name")
.field("content.phone", "phone")
.field("content.fax", "fax")
.field("content.email", "email")
.field("content.address", "address")
.field("content.coordinates", "coordinates")...
为什么我必须这样使用它?因为BusinessResoruce:
public class BusinessResource extends Resource<Business> {
private Business content;
private Link[] links;
}
是否可以通过映射制作一些自动前缀,这会为每个content.
方法添加field
?
提前谢谢
更新#1:尝试使用DefaultFieldMapper
并删除所有手动映射 - 但没有成功,但默认情况下会映射Links对象而没有任何问题。这个解决方案的主要问题是:
suggestMappedField(String fromProperty, Type<?> fromPropertyType)
接收BusinessResource
和content
links
的属性,以及产生的对象为空的原因..
答案 0 :(得分:1)
Orika提供了一种方法来提示如何进行自动映射:DefaultFieldMapper
您可以在类地图级别上使用它,甚至可以全局注册默认的字段映射器。
以下是一个例子:
DefaultFieldMapper myHint = new DefaultFieldMapper() {
public String suggestMappedField(String fromProperty, Type<?> fromPropertyType) {
return "content." + fromProperty;
}};
您可以创建默认
factory.registerDefaultFieldMapper(myHint);
// OR factory.classMap() ... .byDefault(myHint);