在JavaSpringBoot中用两种不同类型的findall()填充dto

j0pj023g  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(350)

我有两个不同类型的收藏。集合由两个服务返回,它们在两个存储库中返回两个findall()。
我想把这两个系列合并成一个dto。我的dto只是所有集合模型变量的组合。
这是我的密码。我尝试了很多技巧,这是其中之一。我想退回一个组合模型集合

List<OneModel> listOne = oneService.oneEndPoint(); // findAll()
            List<TwoModel> listTwo = twoService.twoEndPoint(); // findAll()

            List<ConbinationModel> list = new ArrayList<>();
            list.addAll(listOne);
            list.addAll(listTwo);
7nbnzgx9

7nbnzgx91#

你有很多选择。其中一个可以在您的应用程序中创建两个静态构造函数 ConbinationModel 类,如:

public static ConbinationModel fromOneModel(OneModel model) {
    final ConbinationModel conbinationModel = new ConbinationModel();
    conbinationModel.setField(model.getField());
    // set other fields
    return conbinationModel;
}
public static ConbinationModel fromTwoModel(TwoModel model) {
    final ConbinationModel conbinationModel = new ConbinationModel();
    conbinationModel.setField(model.getField());
    // set other fields
    return conbinationModel;
}

然后你可以浏览你的列表:

List<ConbinationModel> fromListOne = listOne.stream()
    .map(ConbinationModel::fromOneModel)
    .collect(Collectors.toList());
List<ConbinationModel> fromListTwo = listTwo.stream()
    .map(ConbinationModel::fromTwoModel)
    .collect(Collectors.toList());

相关问题