我有以下代码,可以用来转换键并将数据返回到前端:
@GetMapping("pages")
public Page<ContractDTO> pagxes(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size) {
return contractService.findAll(page, size)
//.map(mapper::toDTO);
.map(g -> new ContractDTO(g.getName(), getMerchantName(g.getMerchant_id())));
}
private String getMerchantName(int id) {
Optional<Merchants> obj = merchantService.findById(id);
return obj.get().getName();
}
DTO:
public class ContractDTO {
private Integer id;
.....
private Integer acquirer_id;
private Integer terminal_id;
private String merchant_id;
......
}
如何仅使用terminal_id和merchant_id以及不翻译的所有其他变量,如何.map(g -> new ContractDTO(g.getName(), getMerchantName(g.getMerchant_id())));
将此代码getMerchantName(int id)
重写为从int转换为String?
我可以在ContractDTO中创建构造函数,但是代码将非常庞大。还有其他方法吗?
错误:
未为ContractDTO类型定义方法builder()
答案 0 :(得分:1)
在您的情况下,因为要避免使用多个构造函数,因此可以使用builder design pattern,通过使用lombok库,它会更容易,因此您可以注释{{1 }}加上这个库注释,您便可以完成所有工作:
ContractDTO
那么您的代码可以是:
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
class ContractDTO {
private Integer id;
private String name;
private Integer acquirerId;
private Integer terminalId;
private String merchantId;
}