【发布时间】:2022-01-24 18:12:22
【问题描述】:
我有两节课
@Entity
class Author {
@Id
private Long id;
private String authorName;
@OneToMany(mappedBy = "author")
private List<Book> authorBooks;
}
@Entity
class Book {
@Id
private Long id;
private String bookTitle;
@ManyToOne
@JoinColumn(name = "id")
private Author bookAuthor;
}
我需要将传入的请求映射到以下 dto 类:
class AuthorRequest {
private String authorRequestName;
private List<String> authorRequestBooks;
}
我已经用 MapStruct 实现了一个简单的 dto 接口
@Mapper
public interface AuthorMapper {
@Mapping(target = "authorName", source = "request.authorRequestName")
Author map(AuthorRequest request);
但是,当我还在创建Author 的过程。像这样的
public class AuthorMapperImpl implements AuthorMapper {
@Override
public Author map(AuthorRequest request) {
Author author = new Author();
author.setAuthorName(request.getAuthorRequestName());
author.mapBooks(request.getAuthorRequestBooks(), author);
return author;
}
private List<Book> mapBooks(List<String> authorRequestBooks, Author author) {
List<Book> books = new ArrayList<>();
for (String title : authorRequestBooks) {
Book book = new Book();
book.setBookAuthor(author);
book.setBookTitle(title);
books.add(book);
}
}
return books;
}
}
是否可以使用 MapStruct?
【问题讨论】: