spring data jpa 构建查询

来源:互联网 发布:天界法宝升阶数据 编辑:程序博客网 时间:2024/05/01 00:58

          查询构造器是内置在SpringData中的,他是非常强大的,这个构造器会从方法名中剔除掉类似find...By, read...By, 或者get...By的前缀,然后开始解析其余的名字。你可以在方法名中加入更多的表达式,例如你需要Distinct的约束,那么你可以在方法名中加入Distinct即可。在方法中,第一个By表示着查询语句的开始,你也可以用And或者Or来关联多个条件。


public interface PersonRepository extends Repository<User, Long> {List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);// 需要在语句中使用Distinct关键字,你需要做的是如下List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);List<Person> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname);// 如果你需要忽略大小写,那么你要用IgnoreCase关键字,你需要做的是如下List<Person> findByLastnameIgnoreCase(String lastname);// 所有属性都忽略大小写呢?AllIgnoreCase可以帮到您List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname);// 同样的,如果需要排序的话,那你需要:OrderByList<Person> findByLastnameOrderByFirstnameAsc(String lastname);List<Person> findByLastnameOrderByFirstnameDesc(String lastname);}


根据方法名解析的查询结果跟数据库是相关,但是,还有几个问题需要注意:
  • 多个属性的查询可以通过连接操作来完成,例如And,Or。当然还有其他的,例如Between,LessThan,GreaterThan,Like。这些操作时跟数据库相关的,当然你还需要看看相关的
  • 数据库文档是否支持这些操作。
  • 你可以使用IngoreCase来忽略被标记的属性的大小写,也可以使用AllIgnoreCase来忽略全部的属性,当然这个也是需要数据库支持才允许的。
  • 你可以使用OrderBy来进行排序查询,排序的方向是Asc跟Desc,如果需要动态排序,请看后面的章节。

0 0
原创粉丝点击