重写代码以仅获取几个变量

时间:2019-03-29 17:30:19

标签: java

我有以下代码,可以用来转换键并将数据返回到前端:

@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中创建构造函数,但是代码将非常庞大。还有其他方法吗?

错误:

enter image description here

未为ContractDTO类型定义方法builder()

1 个答案:

答案 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;

}