有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

graphql Java映射数据过滤器

我有一个后端数据模型,它有一个Customer实体。此实体的DTO如下所示:

public class Customer {

private String firstname;
private String surname;
private String dateOfBirth;

}

因此,当我使用存储库从数据库中获取数据时,我将返回List<Customer>。将筛选器应用于存储库,使存储库只获取满足筛选器的数据。可以创建一个筛选器对象并将其交给repository方法。此筛选器对象看起来像:

public class CustomerFilter {

private String firstname;
private String surname;
private String dateOfBirth;

}

然后它将看起来像:customerRepository.getAll(customerFilter)

但是对于客户端,有一个不同的数据模型,其中Customer被命名为Buyer。此类型的DTO略有不同:

public class Buyer {

private String firstname;
private String lastname;
private String birthDate;

}

为了将数据库结果从List<Customer>映射到List<Buyer>,我制作了一个转换器,将Customer映射到Buyer。它工作得非常好

但是,当客户机想要获取数据时,他们可以指定过滤器,在通过存储库获取数据时需要应用这些过滤器。因为客户机只知道Buyer实体,所以他们会制作如下过滤器:

filter: [ 
          { field: "lastname", value: "Doe" },
          { field: "birthDate", value: "10-10-1985" }
        ]

上面的筛选器与CustomerFilter中的字段具有不同的字段名。将客户机的筛选器映射到CustomerFilter对象的最佳方法是什么。我可以制作另一个转换器,将客户机的过滤器映射到CustomerFilter对象。但是当Customer中的dateOfBirth字段更改为date时,我需要在过滤器的转换器和数据库的结果数据中编辑它


共 (0) 个答案