cuốn sách gpt4 ai đã làm

Làm cách nào để ánh xạ một HashMap với danh sách các mảng đối tượng (danh sách là các giá trị trong HashMap) sang một HashMap khác bằng DozerBeanMapper?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 07:59:53 27 4
mua khóa gpt4 Nike

Tôi có hai lớp và muốn sử dụng org.dozer.Mapper( http://dozer.sourceforge.net/ ) ánh xạ các thuộc tính của đối tượng Nữ sang đối tượng Nam.

Loại đầu tiên là:

hạng công lập Nam {
tên chuỗi riêng tư;
họ chuỗi riêng;

Bản đồ riêng tư> địa chỉ liên hệ;
....

Loại thứ hai là:

tầng lớp công khai Nữ {
tên chuỗi riêng tư;
họ chuỗi riêng;
Chuỗi di động riêng;
Chuỗi riêng dateOfBirth;

Bản đồ riêng tư> địa chỉ liên hệ;
...

Loại thứ ba là:

lớp công khai Liên hệ {
phố String riêng;
mã bưu điện chuỗi riêng tư;
email chuỗi riêng tư;
...

Bản đồ mà tôi đang sử dụng làm thuộc tính đối tượng là LinkedHashMap và Danh sách dưới dạng giá trị trong Bản đồ là ArrayList.Khi tôi cố gắng ánh xạ chúng bằng dozer, danh sách mảng là giá trị trong bản đồ băm không phải là danh sách chứa các đối tượng và trông giống như trong hình:

        Bản đồ> liên hệ = new LinkedHashMap<>();
Danh sách listOfcontacts = new ArrayList<>();
Liên hệ contactObj = new Contact();
contactObj.setEmail("lala@gmail.com");
contactObj.setPostcode("1233355");
contactObj.setStreet("đường phố");

listOfLink.add(contactObj);

contact.put("2131323213", listOfLink);
nữObj.setLink(liên hệ);

Đối tượng ánh xạMapper = new DozerBeanMapper();
Nam maleObj = objectMapper.map(femaleObj, Male.class);

nhập mô tả hình ảnh ở đây

Làm cách nào để lấy danh sách các đối tượng trong Danh sách trong đối tượng Nam?

câu trả lời hay nhất

Lúc đầu, tôi đã thử mã của bạn và tôi cũng nhận được hành vi tương tự.

Sau đó, tôi đã sử dụng b-hint (xem tài liệu về điều này) thiết lập rõ ràng cấu hình ánh xạ như hiển thị bên dưới, tôi đã hiểu những gì bạn cần.

Trường hợp đầu tiên - Cấu hình Java(Tạo một lớp mở rộng BeanMappingBuilder):

lớp công khai CustomMapper mở rộng BeanMappingBuilder {
@Ghi đè
được bảo vệ cấu hình void () {
ánh xạ(Female.class, Male.class).fields("danh bạ", "danh bạ", FieldsMappingOptions.hintB(contact.class));
}
}

Tình huống thứ hai——Cấu hình XML:



xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozer.sourceforge.net
http://dozer.sourceforge.net/schema/beanmapping.xsd">


true
true


<ánh xạ="">
blog.valerioemanuele.dozer.Female
blog.valerioemanuele.dozer.Male


địa chỉ liên hệ
địa chỉ liên hệ
blog.valerioemanuele.dozer.Liên hệ





Dưới đây là các bài kiểm tra đơn vị tôi đã thực hiện:

nhập org.dozer.DozerBeanMapper;
nhập org.junit.Assert;
nhập org.junit.jupiter.api.BeforeAll;
nhập org.junit.jupiter.api.Test;

lớp TestFemaleToMaleConversion {

tĩnh riêng Nữ nữObj;

@BeforeAll
khoảng trống tĩnh riêng initData() {
Bản đồ> liên hệ = new LinkedHashMap<>();
Danh sách listOfcontacts = new ArrayList<>();
Liên hệ contactObj = new Contact();
contactObj.setEmail("lala@gmail.com");
contactObj.setPostcode("1233355");
contactObj.setStreet("đường phố");

listOfLink.add(contactObj);

contact.put("2131323213", listOfLink);
nữObj = Nữ mới();
FemaleObj.setName("Elisabeth");
nữObj.setSurname("Chesny");
nữObj.setLink(liên hệ);
}

@Bài kiểm tra
void testWithXmlMapping() {
DozerBeanMapper objectMapper = new DozerBeanMapper();
objectMapper.setMappingFiles(Arrays.asList("dozer-mapping.xml"));
Nam maleObj = objectMapper.map(femaleObj, Male.class);

Assert.assertEquals("lala@gmail.com", maleObj.getcontacts().get("2131323213").get(0).getEmail());
}

@Bài kiểm tra
void testWithJavaMapping() {
DozerBeanMapper objectMapper = new DozerBeanMapper();
objectMapper.addMapping(new CustomMapper());
Nam maleObj = objectMapper.map(femaleObj, Male.class);

Assert.assertEquals("street", maleObj.getLinks().get("2131323213").get(0).getStreet());
}
}

Kết quả như sau:


nhập mô tả hình ảnh ở đây

Bạn có thể bắt đầu từkho GitHub của tôi Lấy mã hoàn chỉnh. Ví dụ này được phát triển bằng Java8, Maven và Junit5.

EDIT: Tôi đã thêm ví dụ về cấu hình ánh xạ Java. từ bài đăng khác lấy cảm hứng từ

Giới thiệu về java - Làm cách nào để ánh xạ một HashMap với một danh sách mảng các đối tượng (danh sách là giá trị trong HashMap) sang một HashMap khác bằng DozerBeanMapper? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/57048557/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress