多字段匹配

有时候我们希望一个查询条件同时作用于多个字段,当其中某一个字段满足条件时,即认为匹配成功。@QueryCondition注解的field属性支持以数组形式传入多个字段,实现多字段匹配的功能。

class Foo {
    Long id;
    String name;
    String nickname;
    int age;
}
class FooQo {
    @QueryCondition(field={"name","content"}, type=Condition.CONTAINS)
    String name;
    @QueryCondition
    int age;
}

FooQo fooQo = new FooQo("foo", 18);
Specification<Foo> specification = SpecificationFactory.getSpecification(fooQo);
List<Foo> foos = fooRepository.findAll(specification);

生成的SQL:

SELECT * FROM FOO
WHERE (LOWER(FOO.NAME) LIKE '%foo%'
		OR LOWER(FOO.NICKNAME) LIKE '%foo%')
	AND FOO.AGE = 18;

Last updated