Как сделать ExampleMatcher, содержащий только одно свойство?

Как реализовать 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 ответ

Решение

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

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 Matching ()
(& static ExampleMatcher MatchAll())

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

Другие вопросы по тегам