Solution 1: 100
@Mapper
public interface MyMapper {
@Mappings({
@Mapping(target="name", source="bObject.nameB"),
@Mapping(target="firstname", source="bObject.firstnameB"),
@Mapping(target="id", source="bObject", qualifiedByName="createId")
})
A BToA(B bObject);
@Named("createId")
default String createId(B bObject) {
return bObject.nameB + bObject.firstnameB;
}
}
生成的代码:
public class MyMapperImpl implements MyMapper {
@Override
public A BToA(B bObject) {
if ( bObject == null ) {
return null;
}
A a = new A();
a.name = bObject.nameB;
a.firstname = bObject.firstnameB;
a.id = createId( bObject );
return a;
}
}
Solution 2: 100
@Mapper
public interface MyMapper {
@Mappings({
@Mapping(target="name", source="bObject.nameB"),
@Mapping(target="firstname", source="bObject.firstnameB"),
@Mapping(target="id", expression = "java(bObject.nameB + bObject.firstnameB)")
})
A BToA(B bObject);
}
生成的代码:
public class MyMapperImpl implements MyMapper {
@Override
public A BToA(B bObject) {
if ( bObject == null ) {
return null;
}
A a = new A();
a.name = bObject.nameB;
a.firstname = bObject.firstnameB;
a.id = bObject.nameB + bObject.firstnameB;
return a;
}
}
Solution 3: 100
@Mapper
public interface MyMapper {
@Mappings({
@Mapping(target="name", source="bObject.nameB"),
@Mapping(target="firstname", source="bObject.firstnameB"),
})
A BToA(B bObject);
@AfterMapping
default void afterMapping(@MappingTarget A aObject, B bObject) {
aObject.id = bObject.nameB + bObject.firstnameB;
}
}
生成的代码:
public class MyMapperImpl implements MyMapper {
@Override
public A BToA(B bObject) {
if ( bObject == null ) {
return null;
}
A a = new A();
a.name = bObject.nameB;
a.firstname = bObject.firstnameB;
afterMapping( a, bObject );
return a;
}
}