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);
-
}
四 查询关键字列表
参考官网:
Spring Data JPA - Reference Documentation
关键字
|
示例
|
功能同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)
|
原文链接:
https://blog.csdn.net/chengqiuming/article/details/82528961
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://blog.csdn.net/xuyonjin
JPA
JPA
是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
JPA
的目标之一是制定一个可以由很多供应商实...
*findByName ==== 根据客户名称
查询
* 在
spring
data
jpa
的运行阶段 会根据方法名称进行解析 findBy 翻译成 from...
Spring
Data
JPA
方法命名规则
查询
按照
Spring
Data
JPA
定义的规则,
查询
方法以findBy开头,涉及条件
查询
时,条件的
属性
用条件关键字连接,要注意的是:条件
属性
首字母需大写。框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。
测试一:测试方法命名规则的
查询
(
查询
方式 精准(默认)):
findBy 对象中的
属性
名(首字母...
1、语法:List findByAgeAndNameOrderByAge(Int age,String name);
a、简单理解,find
查询
,by通过,age 和 name 按照age进行排序
以下(后续补充)忽略:
2、criteriaBuilder 的简单用法。
a.创建criteriaBuilder
CriteriaBuilder criteriaBui
Spring
Boot
Jpa
使用findBy报错
Jpa
Failed to create query for method public abstract com.zhl.internback.domain.Student com.zhl.internback.repository.StudentRepository.findByStunum(int)!
下面这段是小白理解,望指正:
Jpa
的findBy对于常用的字段名(比如name,password,id等)是有自动生成sql语句的方法的,但对于用户
一、什么是
jpa
JPA
本身不是一个工具或框架; 相反,它定义了一组可以由任何工具或框架实现的概念。虽然
JPA
的对象关系映射(ORM)模型最初基于Hibernate,但它已经发展了。简单来说,
JPA
只是一个简化对象关系映射来管理Java应用程序中的关系数据的规范。 它提供了一个平台,可以直接使用对象而不是使用SQL语句。
二、什么是Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,是一个全自动的ORM框架,它可以自动生成SQL语句,自动执
https://blog.csdn.net/blueheart20/article/details/78227473?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-2-78227473.pc_agg_new_rank&utm_term=
jpa
%E8%AE%BE%E7%BD%AE%E6%9C%80%E5%A4%A7%E6%9F%
public interface UserRepository extends Repository<User, Long> {
List<User> findByEmailAddressAndLastname(Strin...
Sort(Direction.DESC,String properties),Direction指定排序方式,properties指定排序的字段
Sort(Direction direction, List pro...
顾名思义:即根据主键
查询
一个实体。在
JPA
中提供了两个方法。分别是:
find(Class entityClass,Object id);
getReference(Class entityClass,Object id);
他们的区别是:
查询
的时机不一样:
find 的方法是立即加载,只要一调用方法就马上发起
查询
。
getReferenc...