Mapping 如何在CustomeConverter中调用推土机转换?
假设我有一门课:Mapping 如何在CustomeConverter中调用推土机转换?,mapping,dozer,Mapping,Dozer,假设我有一门课: class CollectionWrapper { private List<Address> addresses; public List<Address> getAddresses() { if (addresses == null) { addresses = new ArrayList<Address>(); } return addresses
class CollectionWrapper {
private List<Address> addresses;
public List<Address> getAddresses() {
if (addresses == null) {
addresses = new ArrayList<Address>();
}
return addresses;
}
}
class SourceClass {
private CollectionWrapper collectionWrapper;
//getters and setters are omited
}
class DestinationClass {
private List<AddressDto> addresses;
//getters and setters are omited
}
class Address {
String street;
Integer number;
}
class AddressDto {
String street;
Integer number;
}
类集合包装器{
私人名单地址;
公共列表getAddresses(){
如果(地址==null){
地址=新的ArrayList();
}
返回地址;
}
}
类源类{
私有集合包装器集合包装器;
//省略了getter和setter
}
类目的类{
私人名单地址;
//省略了getter和setter
}
班级地址{
弦街;;
整数;
}
类地址到{
弦街;;
整数;
}
显然,下面的代码是不正确的:
class MyCustomeConverter extends DozerConverter<CollectionWrapper, List<AddressDto>> {
List<AddressDto> convertTo (CollectionWrapper source, List<AddressDto> destination) {
List<AddressDto> result = new ArrayList<AddressDto>();
Mapper mapper = new DozerBeanMapper();//INCORRECT !!!!
for (Address address : source.getAddresses()) {
result.add(mapper.map(address, AddressDto.class));
}
return result;
}
//further methods are ommited
}
MyCustomeConverter类扩展了DozerConverter{
列表转换到(CollectionWrapper源、列表目标){
列表结果=新建ArrayList();
映射器映射器=新DozerBeanMapper();//不正确!!!!
for(地址:source.getAddresses()){
add(mapper.map(address,AddressDto.class));
}
返回结果;
}
//建议采用进一步的方法
}
因此,问题是如何在CustomConverter中为原语使用Dozer转换?请参阅org.Dozer.MapperAware接口中的“数据结构转换”一章