字符串匹配

对于字符串类型的查询,默认情况下会对查询条件首尾去空白并且忽略大小写,对此,@QueryCondition注解分别提供trim属性和ignoreCase属性配置。

某些情况下我们需要对数据库的多个字段进行连接操作之后再进行查询,开发人员可以在field参数中使用+连接多个属性(注意加号前后不要出现空格)。

class Foo {
    Long id;
    String firstName;
    String lastName;
    String nickname;
}
class FooQo {
    @QueryCondition(field="firstName+lastName", type=Condition.CONTAINS)
    String name;
    @QueryCondition(trim=false, ignoreCase=false)
    String nickname;
}

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

生成的SQL:

SELECT * FROM FOO
WHERE LOWER(FOO.FIRST_NAME||FOO.LAST_NAME) LIKE '%foobar%'
	AND FOO.NICKNAME LIKE '%FooBar %';

Last updated