我正在尝试了解如何使用Spring Data的Query by Example功能,并且正在努力了解如何使用ExampleMatcher
及其各种with*
方法。使用匹配器的经典示例包括以下代码段:
Person person = new Person();
person.setFirstname("Dave");
ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnorePaths("lastname")
.withIncludeNullValues()
.withStringMatcherEnding();
Example<Person> example = Example.of(person, matcher);
出于某种原因,我无法将我的大脑包裹在这个DSL上。我们从文档中获取Person
示例。假设Person
实体看起来像这样:
// Pseudo code; omitting JPA annotations for this example
public class Person {
private String firstName;
private String lastName;
private Date dob;
private Long score;
// Getters, setters & constructor omitted
}
有人能告诉我一个如何构建ExampleMatcher
的示例,这样我就可以找到符合以下条件的Person
条记录:
如果使用ExampleMatcher
无法满足这些条件中的任何一项,那很好,但有人可以告诉我哪些是或者解释哪些方法可能会让我关闭到什么我在找?
答案 0 :(得分:7)
你可以获得firstName以&#34; Sme&#34;开头的记录。并得分= 50
Person person = new Person();
person.setFirstName("Sme");
person.setScore(50L);
ExampleMatcher matcher = ExampleMatcher.matching()
.withMatcher("firstName", startsWith())
.withMatcher("score", exact());
Example<History> example = Example.of(person, matcher);
personRepository.findAll(example)