专栏首页cwl_Java快速学习-Spring Data JPA的查询方式

快速学习-Spring Data JPA的查询方式

第4章 Spring Data JPA的查询方式

4.1 使用Spring Data JPA中接口定义的方法进行查询

在继承JpaRepository,和JpaRepository接口后,我们就可以使用接口中定义的方法进行查询

  • 继承JpaRepository后的方法列表
  • 继承JpaSpecificationExecutor的方法列表

4.2 使用JPQL的方式查询

使用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于某些业务来说,我们还需要灵活的构造查询条件,这时就可以使用@Query注解,结合JPQL的语句方式完成查询

@Query 注解的使用非常简单,只需在方法上面标注该注解,同时提供一个JPQL查询语句即可

public interface CustomerDao extends JpaRepository<Customer, Long>,JpaSpecificationExecutor<Customer> {    
    //@Query 使用jpql的方式查询。
    @Query(value="from Customer")
    public List<Customer> findAllCustomer();
    
    //@Query 使用jpql的方式查询。?1代表参数的占位符,其中1对应方法中的参数索引
    @Query(value="from Customer where custName = ?1")
    public Customer findCustomer(String custName);
}

此外,也可以通过使用 @Query 来执行一个更新操作,为此,我们需要在使用 @Query 的同时,用 @Modifying 来将该操作标识为修改查询,这样框架最终会生成一个更新的操作,而非查询

    @Query(value="update Customer set custName = ?1 where custId = ?2")
    @Modifying
    public void updateCustomer(String custName,Long custId);

4.3 使用SQL语句查询

Spring Data JPA同样也支持sql语句的查询,如下:

    /**
     * nativeQuery : 使用本地sql的方式查询
     */
    @Query(value="select * from cst_customer",nativeQuery=true)
    public void findSql();

4.4 方法命名规则查询

顾名思义,方法命名规则查询就是根据方法的名字,就能创建查询。只需要按照Spring Data JPA提供的方法命名规则定义方法的名称,就可以完成查询工作。Spring Data JPA在程序执行的时候会根据方法名称进行解析,并自动生成查询语句进行查询

按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写。框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。

    //方法命名方式查询(根据客户名称查询客户)
    public Customer findByCustName(String custName);

具体的关键字,使用方法和生产成SQL如下表所示

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42528266复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Spring Data JPA的查询方式

    使用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于某些业务来说,我们还需要灵活的构造查询条件,这时就可以使用@Query注解...

    暴躁的程序猿
  • 快速学习-Spring Data JPA中的多表查询

    对象图导航检索方式是根据已经加载的对象,导航到他的关联对象。它利用类与类之间的关系来检索对象。例如:我们通过ID查询方式查出一个客户,可以调用Customer类...

    cwl_java
  • 快速学习-Spring Data JPA 入门

    使用Spring Data JPA,需要整合Spring与Spring Data JPA,并且需要提供JPA的服务提供者hibernate,所以需要导入spri...

    cwl_java
  • 快速学习-Spring Data JPA的概述

    Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的...

    cwl_java
  • 快速学习-SpringBoot整合Spring Data JPA

    cwl_java
  • 快速学习-Spring Data JPA 多表设计

    从图可以看出,系统设计的三种实体关系分别为:多对多、一对多和一对一关系。注意:一对多关系可以看为两种: 即一对多,多对一。所以说四种更精确。

    cwl_java
  • 快速学习-Spring Data JPA的内部原理剖析

    在客户的案例中,我们发现在自定义的CustomerDao中,并没有提供任何方法就可以使用其中的很多方法,那么这些方法究竟是怎么来的呢?答案很简单,对于我们自定义...

    cwl_java
  • 快速学习-Spring Data JPA 之 ORM概述

    ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套...

    cwl_java
  • spring data jpa 的 in 查询 Specification 实现

    微风-- 轻许--
  • spring-data-jpa + SpringBoot + bootstrapTable 后端分页 模糊查询spring-data-jpa + SpringBoot + bootstrapTab

    需要注意的是,bootstrap-table与bootstrap 3是兼容的。但是bootstrap 4还不行。

    一个会写诗的程序员
  • Spring Data JPA 实现多表关联查询[通俗易懂]

    多表查询在spring data jpa中有两种实现方式,第一种是利用hibernate的级联查询来实现,第二种是创建一个结果集的接口来接收连表查询后的结果,这...

    全栈程序员站长
  • Spring Data JPA简单查询接口方法速查

    下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口、PagingAndSortingRepository接口)中的可访...

    JQ实验室
  • Spring Data JPA中使用QueryDSL进行查询

    插件的作用是把带有@Entity注解的实体类在指定路径target/generated-sources/java下生成一个衍生的实体类,我们后面就是用这个衍生出...

    砒霜拌辣椒
  • SpringBoot——spring-data-jpa之分页查询

    发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106463.html原文链接:https://javaforall.cn

    全栈程序员站长
  • 聊聊spring data jpa的OpenSessionInView

    本文主要研究一下spring data jpa的OpenSessionInView

    code4it
  • 聊聊spring data jpa的SimpleJpaRepository

    本文主要研究一下spring data jpa的SimpleJpaRepository

    code4it
  • 聊聊spring data jpa的JpaQueryLookupStrategy

    本文主要研究一下spring data jpa的JpaQueryLookupStrategy

    code4it
  • 聊聊spring data jpa的JpaQueryLookupStrategy

    本文主要研究一下spring data jpa的JpaQueryLookupStrategy

    code4it

扫码关注腾讯云开发者

领取腾讯云代金券