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) 个答案