Как сделать ExampleMatcher, содержащий только одно свойство? - PullRequest
0 голосов
/ 27 февраля 2019

Как реализовать ExampleMatcher, в котором случайно содержится только одно свойство из моего класса и игнорируются другие свойства?

Допустим, мой класс выглядит так:

Public Class Teacher() {
    String id;
    String name;
    String address;
    String phone;
    int area;
    ..other properties is here...
}

Если я хочу сопоставить симя:

Teacher TeacherExample = new Teacher("Peter");

ExampleMatcher matcher = ExampleMatcher.matchingAny()
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
.withIgnoreCase()
.withIgnorePaths("id", "address", "phone","area",...);   //no name 

и если я хочу сопоставить по адресу:

ExampleMatcher matcher = ExampleMatcher.matchingAny()
.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
.withIgnoreCase()
.withIgnorePaths("id", "name", "phone","area",...); //no address

, поэтому мне нужно повторить withIgnorePaths(..) Как избежать этого?

1 Ответ

0 голосов
/ 27 февраля 2019

Попробуйте это:

Teacher t = new Teacher("Peter");
Example<Teacher> te = Example.of(t,
    ExampleMatcher.matching()
        .withStringMatcher(StringMatcher.CONTAINING)
        .withIgnoreCase());

С ExampleMatcher.matching() или ExampleMatcher.matchingAll() выполняется сравнение со всеми ненулевыми полями в вашем примере учителя t, поэтому просто назовите (предполагается из "Питера").

ПРИМЕЧАНИЕ : с примитивными значениями вам просто нужно добавить их к withIgnorePaths(..) или изменить их на типы в штучной упаковке, такие как int -> Integer, других простых обходных путей нет.

Если вам нужен поиск только по int area, не задавайте имя, но вы в своем примере t

t.setArea(55);

или если у вас было Date created, поиск создан:

t.setCreated(someDate);

Вы можете даже настроить их все, чтобы сузить поиск, применив их все.

Из документов

static ExampleMatcher match ()
(& static ExampleMatcher matchAll ())

Создать новый ExampleMatcher, включающий все ненулевые свойства, по умолчанию соответствующие всем предикатам, полученным из примера.

...