java - 将域实体和一些列表映射到 Dto 对象
问题描述
我想使用 modelMapper 因为域实体与 dto 对象匹配。但是有一些问题。在 dto 对象中,它有一些数组列表,如 orderList、codeList....
这是我的代码
这是用户、userDto、userServiceImpl 与我的对象和服务相比的示例代码。
// it is my User domain
@Data
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer seq;
@ManyToOne
@JoinColumn(name="role_seq")
private Role role;
@Column(name="first_name")
private String firstName;
@Column(name="last_name")
private String lastName;
}
// it is my UserDto
@Data
public class UserDto {
private Integer userSeq;
private Integer roleSeq;
private String firstName;
private String lastName;
private List<Integer> orderList = new ArrayList<>();
private List<String> codeList = new ArrayList<>();
}
// and Last it is service layer
@Service
public class UserServiceImpl implements UserService {
@Override
public UserDto getUserDto(Integer userSeq) {
User user = userRepository.findBySeq(userSeq);
List<UserCode> userCodeList = userCodeRepository.findAllByUserSeqOrderByOrderNoAscNullsLast(userSeq);
ModelMapper modelMapper = new ModelMapper();
UserDto userDto = modelMapper.map(user, UserDto.class);
for (int i = 0; i < userCodeList.size(); i++) {
userDto.getOrderList().add(userCodeList.get(i).getOrderNo()); // I don't like this code...
userDto.getCodeSeqList().add(userCodeList.get(i).getCode().getCodeName()); // I don't like this code too...
}
PropertyMap<User, UserDto> userToUserDtoPropertyMap = new PropertyMap<User, UserDto>() {
protected void configure() {
map().setUserSeq(source.getSeq());
map().setRoleSeq(source.getRole().getSeq()); // I don't know why it is not mapping...
}
};
modelMapper.addMappings(userToUserDtoPropertyMap);
return userDto;
}
}
在示例中,只有两个列表,但在我的代码中是 7 个列表。我只想使用映射器而不是“获取和添加”。请帮助我...我该如何解决?
解决方案
您可以使用 jsonignoreproperties 注释来忽略 DTO 中缺少的属性。所以它只会填充两者都可用的那些属性。请检查以下使用 ObjectMapper 用于相同目的的 URL。 https://www.thetechnojournals.com/2019/10/entity-object-conversion-to-dto-object.html
推荐阅读
- python - 无法使用网络摄像头在 RaspberryPi 中执行实时视频处理
- html - 更改 React 组件中选定选项的文本
- visual-studio-code - Visual Studio Code 中的 CFlint:CFLint 存在问题。spawn java.exe ENOENT
- python - 如何解决我的 python 代码中的类型错误问题?
- r - 基于两个变量的分组,包括它们各自的组合(例如 A - B 与 B - A 相同)
- parallel-processing - 运行 SYCL 代码时结果不正确。在尝试使循环并行化时
- vue.js - 使用 delayResponse 时,flushPromises() 函数不等待模拟 axios 调用被解析
- django - 如何在 Openshift 上安装 Pillow
- c# - Selenium Specflow Hooks 在测试运行后关闭驱动程序
- angular - 角度实时部署中的潜在有害程序问题