spring data jpa 构建查询
2016-01-12 13:42
585 查看
查询构造器是内置在SpringData中的,他是非常强大的,这个构造器会从方法名中剔除掉类似find...By, read...By, 或者get...By的前缀,然后开始解析其余的名字。你可以在方法名中加入更多的表达式,例如你需要Distinct的约束,那么你可以在方法名中加入Distinct即可。在方法中,第一个By表示着查询语句的开始,你也可以用And或者Or来关联多个条件。
根据方法名解析的查询结果跟数据库是相关,但是,还有几个问题需要注意:
多个属性的查询可以通过连接操作来完成,例如And,Or。当然还有其他的,例如Between,LessThan,GreaterThan,Like。这些操作时跟数据库相关的,当然你还需要看看相关的
数据库文档是否支持这些操作。
你可以使用IngoreCase来忽略被标记的属性的大小写,也可以使用AllIgnoreCase来忽略全部的属性,当然这个也是需要数据库支持才允许的。
你可以使用OrderBy来进行排序查询,排序的方向是Asc跟Desc,如果需要动态排序,请看后面的章节。
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); // 同样的,如果需要排序的话,那你需要:OrderBy List<Person> findByLastnameOrderByFirstnameAsc(String lastname); List<Person> findByLastnameOrderByFirstnameDesc(String lastname); }
根据方法名解析的查询结果跟数据库是相关,但是,还有几个问题需要注意:
多个属性的查询可以通过连接操作来完成,例如And,Or。当然还有其他的,例如Between,LessThan,GreaterThan,Like。这些操作时跟数据库相关的,当然你还需要看看相关的
数据库文档是否支持这些操作。
你可以使用IngoreCase来忽略被标记的属性的大小写,也可以使用AllIgnoreCase来忽略全部的属性,当然这个也是需要数据库支持才允许的。
你可以使用OrderBy来进行排序查询,排序的方向是Asc跟Desc,如果需要动态排序,请看后面的章节。
相关文章推荐
- 解析JPA的视图查询问题
- Spring 4 with JPA (Hibernate 4/EclipseLink)
- EJB3 事务控制
- JPA复杂实体关系的构建
- JPA实体代码生成器
- JPA查询返回子句
- 初步认识JPA
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 日期注解
- JPA入门教程【转】
- springmvc4+spring data jpa
- 记jpa、json问题之:handler and unable to find...by id ..
- spring data jpa 标准查询的项目代码结构
- 数据过滤器注解@Filter 如何在hibernate、spring data jpa中调用
- Hibernate4之主键映射机制
- Hibernate4之一对多双向关联
- Hibernate4之一对一关联
- Hibernate4之多对一单向关联
- Hibernate4之多对多单向关联
- Hibernate4之多对多双向关联