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

标签 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;
    ......
}

如何重写此代码 .map(g -> new ContractDTO(g.getName(), getMerchantName(g.getMerchant_id())));使用 getMerchantName(int id) 将 int 转换为 String只有terminal_id和merchant_id以及所有其他变量不被翻译?

我可以在 ContractDTO 中创建构造函数,但代码会很大。还有其他办法吗?

错误:

enter image description here

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/

相关文章:

java - 缓存 yield : mobile versus server development

java - 当盐值更改时,基于密码的加密失败

java - Java 中的谷歌地图 API

java - 对数据摄取Hadoop感到困惑

java - 将带逗号的字符串值转换为具有正确区域设置的十进制

java - 如何在 onCreate 中隐藏 Android LinearLayout?

java - 将方法组合在一种方法中还是使用多种方法更好?

java - 如何在java中为ssh连接设置密码

java - 我可以获得专门针对用户故事的单元测试覆盖率报告吗?

javascript - 无法解析 Gradle 依赖项