创建查询

基础Spring Data repository内置的查询生成器机制对于创建实体仓库的约束查询是有用的,它会从方法名中去掉find...By,read...By,query...By,count...By和get...By这些前缀并解析剩下的内容.这些前缀还能包含更多的表达式例如Distinct,设置一个distinct标志并在查询中创建它,然后第一个By的动作就像一个分隔符来表明查询实际标准的开始。最基本的方式你可以在实体属性中定义表达式并用AND和OR连接它们。

     public interface PersonRepository extends Repository<user,Long>{
         List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);

         //Enables the distinct flag for the query
         List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname,String firstname);

         List<Person> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname);

         // Enabling ignoring case for an individual property
         List<Person> findByLastnameIgnoreCase(String lastname);
         // Enabling ignoring case for all suitable properties
         List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname);

         // Enabling static ORDER BY for a query
         List<Person> findByLastnameOrderByFirstnameAsc(String lastname);
         List<Person> findByLastnameOrderByFirstnameDesc(String lastname);
     }

解析方法实际的结果依赖于你创建查询的持久存储。然后这里还算是有一些需要注意的事情。

  • 表达式通常会结合级联的操作来进行属性遍历。你可以结合表达式属性AND和OR。对于属性表达式你也可以使用可支持的操作比如Between,LessThan,GreaterThan ,Like。这些支持的操作由不同的数据存储而不同,所以你需要查看你参考的文档中合适的部分。
  • 方法解析支持为某些属性设置一个IgnoreCase标志(例如,findByLastnameIgnoreCase(...))或者为所有属性都支持忽略类型(通常是String实例,例如,findByLastnameAndFirstnameAllIgnoreCase(...))。是否支持ignoring cases 可能根据store不同而不同,所以相关部分在特殊库查询方法的参考文档中。
  • 你可以通过增加一个OrderBy字段在按照属性来升降序的查询方法中用来静态排序。想要创建一个查询方法能够支持动态排序,请看特殊参数处理

results matching ""

    No results matching ""