web-dev-qa-db-fra.com

Exemples de données SpringMatchers par exemple

J'essaie de comprendre comment utiliser les capacités de Spring Data Query by Example , et j'ai du mal à comprendre comment utiliser ExampleMatcher et ses divers with* méthodes. Des exemples classiques du matcher utilisé incluent des extraits comme celui-ci:

Person person = new Person();                          
person.setFirstname("Dave");                           

ExampleMatcher matcher = ExampleMatcher.matching()     
  .withIgnorePaths("lastname")                         
  .withIncludeNullValues()                             
  .withStringMatcherEnding();                          

Example<Person> example = Example.of(person, matcher);

Pour une raison quelconque, je ne peux pas envelopper mon cerveau autour de cette DSL. Prenons l'exemple Person de la documentation. Disons qu'une entité Person ressemble à ceci:

// 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
}

Quelqu'un peut-il me montrer comment construire un ExampleMatcher qui me permettrait de trouver des enregistrements Person répondant aux critères suivants:

  • Le prénom commence par " Sme"; et
  • Le nom de famille comporte moins de 10 caractères; et
  • La date de naissance est antérieure au 01/01/1970; et
  • Le score est compris entre 10 et 20 inclusivement

Si l'un de ces critères n'est pas possible avec ExampleMatcher, c'est bien, mais quelqu'un peut-il me montrer lesquels sont ou expliquer quelles méthodes pourraient me permettre fermer vers ce que je recherche?

7
smeeb

Vous pouvez obtenir des enregistrements avec firstName commençant par "Sme" et score = 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)
14
pvpkiran