如何使用 mapstruct 映射 DTO?
How Can I mapping DTOs using mapstruct?
我正在尝试使用 mapstruct 将实体数据映射到 DTO。
有了这些来源,我可以映射 id、title 数据。
但问题是....我无法使用这些来源映射用户名。
我该如何解决这个问题??
@Entity // DB와의 연결을 위하여
@Data // getter setter
public class Board {
@Id // id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Size(min=2, max=30)
private String title;
@Length(min=20)
@Lob
@Column(columnDefinition="TEXT", nullable = false)
private String content;
@ManyToOne
@JoinColumn(name="userId", referencedColumnName = "id")
private User user;
}
@Builder
@AllArgsConstructor
@Data
public class BoardListDto {
private Long id;
private String title;
private String userName;
}
@Mapper(componentModel = "spring")
public interface BoardListMapper extends EntityMapper<BoardListDto, Board> {
@Override
@Mapping(target = "userName", source = "user.name.value")
List<BoardListDto> toDtos(List<Board> board);
}
public interface EntityMapper <D, E> {
E toEntity(D dto);
D toDto(E entity);
// Entity업데이트 시 null이 아닌 값만 업데이트 하도록 함.
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void updateFromDto(D dto, @MappingTarget E entity);
List<D> toDtos(List<E> entity);
}
无需为此实现 toDtos 方法。这段代码应该足够了,Mapstruct 将单独处理其余部分。
@Mapper(componentModel = "spring")
public interface BoardListMapper extends EntityMapper<BoardListDto, Board> {
@Override
@Mapping(target = "userName", source = "user.name")
BoardListDto toDto(Board board);
}
我正在尝试使用 mapstruct 将实体数据映射到 DTO。 有了这些来源,我可以映射 id、title 数据。 但问题是....我无法使用这些来源映射用户名。
我该如何解决这个问题??
@Entity // DB와의 연결을 위하여
@Data // getter setter
public class Board {
@Id // id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Size(min=2, max=30)
private String title;
@Length(min=20)
@Lob
@Column(columnDefinition="TEXT", nullable = false)
private String content;
@ManyToOne
@JoinColumn(name="userId", referencedColumnName = "id")
private User user;
}
@Builder
@AllArgsConstructor
@Data
public class BoardListDto {
private Long id;
private String title;
private String userName;
}
@Mapper(componentModel = "spring")
public interface BoardListMapper extends EntityMapper<BoardListDto, Board> {
@Override
@Mapping(target = "userName", source = "user.name.value")
List<BoardListDto> toDtos(List<Board> board);
}
public interface EntityMapper <D, E> {
E toEntity(D dto);
D toDto(E entity);
// Entity업데이트 시 null이 아닌 값만 업데이트 하도록 함.
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void updateFromDto(D dto, @MappingTarget E entity);
List<D> toDtos(List<E> entity);
}
无需为此实现 toDtos 方法。这段代码应该足够了,Mapstruct 将单独处理其余部分。
@Mapper(componentModel = "spring")
public interface BoardListMapper extends EntityMapper<BoardListDto, Board> {
@Override
@Mapping(target = "userName", source = "user.name")
BoardListDto toDto(Board board);
}