我有这个代码,我想用它来翻译键并将数据返回到前端:
@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;
......
}
如何重写此代码 .map(g -> new ContractDTO(g.getName(), getMerchantName(g.getMerchant_id())));
使用 getMerchantName(int id)
将 int 转换为 String只有terminal_id和merchant_id以及所有其他变量不被翻译?
我可以在 ContractDTO 中创建构造函数,但代码会很大。还有其他办法吗?
错误:
ContractDTO 类型未定义方法 builder()
最佳答案
在您的情况下,因为您想避免多个构造函数,您可以使用 builder design pattern ,通过使用 lombok库,它可以更容易,所以你可以用这个库注释来注释你的 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;
}
那么你的代码可以是:
...
.map(g -> ContractDTO.builder()
.name(g.getName())
.merchantName(g.getMerchantId())
.build()
)....
关于java - 重写代码以仅获取几个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55422753/