Hướng dẫn ánh xạ đối tượng với ModelMapper trong Java
Ánh xạ đối tượng là một quá trình chuyển đổi dữ liệu từ đối tượng này sang đối tượng khác. Trong Java, nó có thể là một nhiệm vụ tẻ nhạt đòi hỏi nhiều mã soạn sẵn để ánh xạ dữ liệu giữa hai đối tượng có cấu trúc khác nhau. May mắn thay, có một thư viện mạnh gọi là ModelMapper giúp đơn giản hóa quy trình ánh xạ đối tượng và cung cấp nhiều tính linh hoạt trong việc tùy chỉnh hành vi ánh xạ.
Trong bài viết này, chúng tôi sẽ giới thiệu với bạn về ModelMapper và chỉ cho bạn cách sử dụng nó để ánh xạ giữa hai đối tượng trong Java.
Bắt đầu với ModelMapper
Để bắt đầu sử dụng ModelMapper trong dự án Java của bạn, bạn cần thêm thư viện ModelMapper vào dự án của mình. Nếu bạn đang sử dụng Maven, hãy thêm phần phụ thuộc sau vào pom.xmltệp dự án của bạn:
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.4.2</version>
</dependency>
implementation 'org.modelmapper:modelmapper:2.4.2'
Ánh xạ các đối tượng với ModelMapper
Giả sử bạn có hai đối tượng có cấu trúc khác nhau và bạn muốn ánh xạ dữ liệu giữa chúng. Đây là một ví dụ:
public class User {
private String name;
private int age;
// constructor, getters, and setters
}
public class UserDTO {
private String fullName;
private int userAge;
// constructor, getters, and setters
}
public class Main {
public static void main(String[] args) {
User user = new User("John", 30);
ModelMapper modelMapper = new ModelMapper();
UserDTO userDTO = modelMapper.map(user, UserDTO.class);
System.out.println(userDTO.getFullName()); // Output: John
System.out.println(userDTO.getUserAge()); // Output: 30
}
}
Khi chúng tôi chạy mainphương thức, đầu ra sẽ là Johnvà 30, điều này cho biết rằng ánh xạ đã thành công.
Tùy chỉnh ánh xạ đối tượng
ModelMapper cung cấp rất nhiều tính linh hoạt trong việc tùy chỉnh ánh xạ đối tượng. Bạn có thể chỉ định ánh xạ trường tùy chỉnh, tạo bộ chuyển đổi loại và định cấu hình các chiến lược ánh xạ khác nhau.
Ánh xạ trường tùy chỉnh
Đôi khi, bạn có thể cần ánh xạ các trường có tên khác nhau giữa hai đối tượng. Bạn có thể đạt được điều này bằng cách chỉ định ánh xạ trường tùy chỉnh. Đây là một ví dụ:
modelMapper.typeMap(User.class, UserDTO.class)
.addMappings(mapper -> {
mapper.map(src -> src.getName(), UserDTO::setFullName);
mapper.map(src -> src.getAge(), UserDTO::setUserAge);
});
Bộ chuyển đổi loại
ModelMapper cung cấp một số bộ chuyển đổi kiểu tích hợp có thể tự động chuyển đổi dữ liệu giữa các kiểu khác nhau. Tuy nhiên, đôi khi bạn có thể cần tạo bộ chuyển đổi loại của riêng mình cho các loại dữ liệu tùy chỉnh. Đây là một ví dụ:
public class DateToStringConverter extends AbstractConverter<Date, String> {
@Override
protected String convert(Date source) {
return source.toString();
}
}
Chúng ta có thể đăng ký bộ chuyển đổi kiểu tùy chỉnh với ModelMappercá thể bằng cách gọi addConverter()phương thức:
modelMapper.addConverter(new DateToStringConverter());
Chiến lược lập bản đồ
ModelMapper cung cấp một số chiến lược ánh xạ có thể được sử dụng để tùy chỉnh hành vi ánh xạ. Một số chiến lược có sẵn bao gồm Strict, Loosevà Standard.
Ví dụ: Loosechiến lược cho phép ánh xạ giữa các trường có tên và loại khác nhau, trong khi Strictchiến lược thực thi các quy tắc ánh xạ nghiêm ngặt và đưa ra ngoại lệ khi không thể thực hiện ánh xạ.
Bạn có thể đặt chiến lược ánh xạ bằng cách gọi setMatchingStrategy()phương thức trên ModelMapperví dụ:
modelMapper.getConfiguration()
.setMatchingStrategy(MatchingStrategies.LOOSE);
Phần kết luận
Trong bài viết này, chúng tôi đã giới thiệu cho các bạn cách sử dụng ModelMapper để ánh xạ giữa hai đối tượng trong Java. ModelMapper là một thư viện mạnh giúp đơn giản hóa quy trình ánh xạ đối tượng và cung cấp nhiều tính linh hoạt trong việc tùy chỉnh hành vi ánh xạ.
Bằng cách sử dụng ModelMapper, bạn có thể tránh viết nhiều mã soạn sẵn để ánh xạ đối tượng và tập trung vào chức năng cốt lõi của ứng dụng của mình.
Cảm ơn đã đọc. Chúc bạn học tập vui vẻ
Hãy ủng hộ ấn phẩm của chúng tôi bằng cách theo dõi nó
Ngoài ra tham khảo các bài viết sau
Câu hỏi phỏng vấn dựa trên luồng Java8 thường gặp nhất — Phần 1 Mã hóa: Làm phẳng một mảng trong Javascript Cách dễ nhất để truy cập cơ sở dữ liệu trong JAVA Vẻ đẹp của sự hỗn loạn: Làm thế nào những suy nghĩ ngẫu nhiên có thể truyền cảm hứng sáng tạo Nắm bắt nhiều ngoại lệ trong Java Apache Maven — Tóm tắt
![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































