Tôi đang cố di chuyển một dự án sử dụng dozer
đến orika
.Cách định cấu hình Orika để ánh xạ lớp này sang lớp khác tùy thuộc vào ngữ cảnh?
Trong dozer, đó là một thực tế phổ biến để có một cái gì đó như thế:
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://dozer.sourceforge.net
http://dozer.sourceforge.net/schema/beanmapping.xsd">
<mapping map-id="all">
<class-a>com.bnppa.cdj.dto.Source</class-a>
<class-b>com.bnppa.cdj.dto.Destination</class-b>
<field>
<a>id</a>
<b>id</b>
</field>
<field>
<a>someField</a>
<b>someField</b>
</field>
</mapping>
<mapping map-id="small">
<class-a>com.bnppa.cdj.dto.Source</class-a>
<class-b>com.bnppa.cdj.dto.Destination</class-b>
<field>
<a>id</a>
<b>id</b>
</field>
</mapping>
</mappings>
Và sau đó sử dụng mapId khi chuyển đổi các đối tượng:
Source s = ...
List<String> mappingFiles = new ArrayList<String>();
mappingFiles.add("dozer/dozerMapping.xml");
mapper = new DozerBeanMapper(mappingFiles);
Destination d = mapper.map(mySource, Destination.class, "small");
Vì vậy, câu hỏi của tôi là: Làm thế nào để cấu hình Orika có những thứ mapId như thế?
tôi không thể tìm cách khai báo một bản đồ-id khi tôi xác định người vẽ bản đồ của tôi:
MapperFactory factory = new DefaultMapperFactory.Builder().build();
//Register a mapper
factory.registerClassMap(factory.classMap(Source.class, Destination.class)
.field("id","id")
.field("someField", "someField")
.toClassMap());