你能告诉我是否存在一些漂亮的方法将一个实体对象映射到另一个dto对象?当我需要将List<ObjEntity>
转换为List<ObjDTO>
时,我创建了该函数:
public class Converter {
public static Function<ObjEntity, ObjDTO> MYOBJ_ENTITY_TO_DTO = objEntity -> {
ObjDTO dto = new ObjDTO();
dto.setId(objEntity.getId());
dto.setName(objEntity.getName());
dto.setNote(objEntity.getNote());
// ...
return dto;
};
}
我这样使用它:
List<ObjDTO> dtos = objEntitiesList.stream().map(Converter.MYOBJ_ENTITY_TO_DTO).collect(Collectors.toList());
但是,如果我只需要转换一个对象怎么办?我应该为此使用
MYOBJ_ENTITY_TO_DTO
函数吗?如何使用?或最佳做法是什么?是的,我可以在Converter类中执行经典功能,如下所示:public static ObjEntity dtoToEntity(ObjDTO dto) {
// map here entity to dto and return entity
}
但它是旧样式。在Java 8中存在一些新做法吗?类似于我的lambda列表示例吗?
最佳答案
ObjDTO dto = MYOBJ_ENTITY_TO_DTO.apply(entity);
我更常看到另一种方式:代替
MYOBJ_ENTITY_TO_DTO
,将entityToDto
定义为方法并使用List<ObjDTO> dtos = objEntitiesList.stream().map(Converter::entityToDto).collect(Collectors.toList());
用于列表。