Dto C# là gì
Đặt vấn đềKhi viết RestApi ta chỉ thường chọn một số thông tin để truyền về client. Ví dụ như thông tin user thì không cần truyền password chẳng hạn :v. Từ đó, ta cần convert sang cái gọi là data transfer object (DTO) Show Tại sao lại cần dùng Model MapperVì lười :v Viết get dữ liệu từ đối tượng ban đầu sang dto khiến mất nhiều thời gian, đồng thời code lặp lại nhiều. Ví dụ như sau: public class User { private long id; private String username; private String password; private String avatar; private String fullname; private ListTa cần truyền 2 dto tương ứng là: Code bằng tay sẽ như sau: UserDto userDto = new UserDto(); userDto.setAvatar(user.getAvatar()); userDto.setFullname(user.getFullname()); userDto.setUsername(user.getUsername()); userDto.setId(user.getId()); ListModel Mapper là thư viện để chuyển đổi đối tượng ban đầu sang dto, dễ dùng và rất linh hoạt. Nhìn 2 đoạn code thì bạn nên dùng như thế nào rồi chứ :simle: Cách sử dụngBạn có thể tải trực tiếp thư viện và cài trong classpath. Hoặc bạn nào dùng maven thì add đoạn sau vào pom.xml Nhìn ví dụ bạn cũng có thể hiểu qua cách nó mapping các trường tương ứng. ModelMapper có Matching Strategies (default là Standart) được mô tả như sau:
Đến đây có thể một số bạn đặt ra câu hỏi là nếu đích có một số trường không có ở đối tượng ban đầu hoặc trường đó chỉ dựa vào dữ liệu ban đầu chứ không giống hoàn toàn thì sao? Cái này ModelMapper thể hiện rõ sự linh hoạt qua việc sử dụng Converter. Bạn để ý hàm Converter. là thể hiện kiểu đầu vào và ra. context.getSource() là dữ liệu đầu vào. Kết luậnModelMapper còn rất nhiều tính năng và cách cài đặt. Tuy nhiên mình tin rằng với cần trên thông tin bạn đã giải quyết được hầu hết trường hợp cần mapping. Bài viết còn thiếu sót mong các bạn góp ý. Tài liệu tham khảo[1]. http://modelmapper.org/getting-started/ |