Spring Data JPA根据属性名查询
一 点睛
Spring Data JPA支持通过定义在Repository接口的方法名来定义查询,而方法名是根据实体类的属性名来确定的。
二 常规查询
根据属性名来定义查询方法,示例如下:
public interface PersonRepo extends JpaRepository<Person,Long>{
//相对于名字相等查询,参数为name
List<Person> findByName(String name);
//通过名字like查询,参数为name
List<Person> findByNameLike(String name);
//通过名字和地址查询,参数为name和address
List<Person> findByNameAndAddress(String name,String address);
}
从代码可以看出,使用了findBy、Like,And这样的关键字,其中findBy可以用find、read、readBy、query、queryBy,get、getBy来代替。
三 限制结果数量
结果数量是用top和first关键字来实现的,示例如下:
public interface PersonRepo extends JpaRepository<Person,Long>{
//查询符合查询条件的前10条数据
List<Person> findFirst10ByName(String name);
//获得符合查询条件的前30条数据
List<Person> findTop30ByName(String name);
}
四 查询关键字列表
参考官网:https://docs.spring.io/spring-data/jpa/docs/2.0.9.RELEASE/reference/html/
关键字 |
示例 |
功能同JPQL |
And |
findByLastnameAndFirstname |
… where x.lastname = ?1 and x.firstname = ?2 |
Or |
findByLastnameOrFirstname |
… where x.lastname = ?1 or x.firstname = ?2 |
Is,Equals |
findByFirstname,findByFirstnameIs,findByFirstnameEquals |
… where x.firstname = ?1 |
Between |
findByStartDateBetween |
… where x.startDate between ?1 and ?2 |
LessThan |
findByAgeLessThan |
… where x.age < ?1 |
LessThanEqual |
findByAgeLessThanEqual |
… where x.age <= ?1 |
GreaterThan |
findByAgeGreaterThan |
… where x.age > ?1 |
GreaterThanEqual |
findByAgeGreaterThanEqual |
… where x.age >= ?1 |
After |
findByStartDateAfter |
… where x.startDate > ?1 |
Before |
findByStartDateBefore |
… where x.startDate < ?1 |
IsNull |
findByAgeIsNull |
… where x.age is null |
IsNotNull,NotNull |
findByAge(Is)NotNull |
… where x.age not null |
Like |
findByFirstnameLike |
… where x.firstname like ?1 |
NotLike |
findByFirstnameNotLike |
… where x.firstname not like ?1 |
StartingWith |
findByFirstnameStartingWith |
… where x.firstname like ?1 (parameter bound with appended %) |
EndingWith |
findByFirstnameEndingWith |
… where x.firstname like ?1 (parameter bound with prepended %) |
Containing |
findByFirstnameContaining |
… where x.firstname like ?1 (parameter bound wrapped in %) |
OrderBy |
findByAgeOrderByLastnameDesc |
… where x.age = ?1 order by x.lastname desc |
Not |
findByLastnameNot |
… where x.lastname <> ?1 |
In |
findByAgeIn(Collection<Age> ages) |
… where x.age in ?1 |
NotIn |
findByAgeNotIn(Collection<Age> ages) |
… where x.age not in ?1 |
True |
findByActiveTrue() |
… where x.active = true |
False |
findByActiveFalse() |
… where x.active = false |
IgnoreCase |
findByFirstnameIgnoreCase |
… where UPPER(x.firstame) = UPPER(?1) |
上一篇: python爬虫-动态网站爬取
推荐阅读
-
Spring data JPA 多表联合分页查询 自定义实体类
-
【Spring Data 系列学习】Spring Data JPA @Query 注解查询
-
Spring data jpa的使用与详解(复杂动态查询及分页,排序)
-
在Spring Boot中使用Spring-data-jpa实现分页查询
-
spring data jpa的动态查询封装
-
Spring Data JPA 查询
-
Spring Data JPA 查询
-
使用Spring Data JPA查询时,报result returns more than one elements异常
-
【Spring Data JPA自学笔记三】Spring Data JPA的基础和高级查询方法
-
序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询