Java 映射数据和过滤器

问题描述

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

public class Customer {

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

}

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

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 对象。但是,当 dateOfBirth 中的字段 Customer 更改为 date 时,我需要在过滤器的转换器和数据库中的结果数据中对其进行编辑。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...