Spring Data JPA根据属性名查询

https://blog.csdn.net/chengqiuming/article/details/82528961

一 点睛

Spring Data JPA支持通过定义在Repository接口的方法名来定义查询,而方法名是根据实体类的属性名来确定的。

二 常规查询

根据属性名来定义查询方法,示例如下:

 
  1. public interface PersonRepo extends JpaRepository<Person,Long>{

  2. //相对于名字相等查询,参数为name

  3. List<Person> findByName(String name);

  4. //通过名字like查询,参数为name

  5. List<Person> findByNameLike(String name);

  6. //通过名字和地址查询,参数为name和address

  7. List<Person> findByNameAndAddress(String name,String address);

  8. }

从代码可以看出,使用了findBy、Like,And这样的关键字,其中findBy可以用find、read、readBy、query、queryBy,get、getBy来代替。

三 限制结果数量

结果数量是用top和first关键字来实现的,示例如下:

 
  1. public interface PersonRepo extends JpaRepository<Person,Long>{

  2. //查询符合查询条件的前10条数据

  3. List<Person> findFirst10ByName(String name);

  4. //获得符合查询条件的前30条数据

  5. List<Person> findTop30ByName(String name);

  6. }

四 查询关键字列表

参考官网: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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值