Spring Boot 2.x实战61 - Spring Data 5 - Spring Data JPA查询(JPA命名查询、JPQL、原生SQL查询)

本文介绍了Spring Data JPA的查询方式,包括JPA命名查询、JPQL查询和原生SQL查询。通过在实体上定义命名查询,使用JPQL进行简单查询,以及利用注解执行原生SQL,详细阐述了Spring Boot中数据访问的多种手段。此外,还提及了一本新书《从企业级开发到云原生微服务:Spring Boot 实战》,涵盖Spring Boot的多个核心主题。
摘要由CSDN通过智能技术生成
2.6.1.2 JPA命名查询

我们使用@NamedQuery注解在实体上来做命名查询。

@Entity
@NamedQuery(name = "Person.findByNameWyf",
    query = "select p from Person p where p.name = 'wyf'")
public class Person {

若命名的方法和推导查询的方法同名将会覆盖推导查询的方法。

PersonRepository中声明方法:

public interface PersonRepository extends JpaRepository<Person, Long> {
    List<Person> findByNameWyf();
}

我们用代码来检验结果:

@Bean
CommandLineRunner namedQuery(PersonRepository personRepository){
   return args -> {
      List<Person> people1 = personRepository.findByNameWyf();
      people1.forEach(System.out::println);
   };
}

在这里插入图片描述

2.6.1.3 JPQL查询

@NamedQuery适合少量的查询,我们可以使用@Query注解在Repository方法上让方法执行定义的JPQL:

public interface PersonRepository extends JpaRepository<Person, Long> {
    @Query("select p from Person p where p.name = ?1")
    List<Person> findByJpql(String name);
}

findBySome的JPQL和findByName一致。

@Bean
CommandLineRunner jpqlQuery(PersonRepository personRepository){
   return args -> {
      List<Person> people1 = personRepository.findByJpql("wyf");
      people1.forEach(System.out::println);
   };
}

更多关于JPQL的用法可参考http://www.datanucleus.org/products/accessplatform/jpa/query.html

2.6.1.4 SQL查询

只要我们在@Query注解上设置属性nativeQuery = true即可使用原生SQL查询:

public interface PersonRepository extends JpaRepository<Person, Long> {
    @Query(value = "select * from person where name = ?1", nativeQuery = true)
    List<Person> findBySql(String name);
}

检验代码:

@Bean
CommandLineRunner nativeQuery(PersonRepository personRepository){
   return args -> {
      List<Person> people1 = personRepository.findBySql("wyf");
      people1.forEach(System.out::println);
   };
}

新书推荐:

我的新书《从企业级开发到云原生微服务:Spring Boot 实战》已出版,内容涵盖了丰富Spring Boot开发的相关知识
购买地址:https://item.jd.com/12760084.html
在这里插入图片描述

主要包含目录有:

第一章 初识Spring Boot(快速领略Spring Boot的美丽)
第二章 开发必备工具(对常用开发工具进行介绍:包含IntelliJ IDEA、Gradle、Lombok、Docker等)
第三章 函数式编程
第四章 Spring 5.x基础(以Spring 5.2.x为基础)
第五章 深入Spring Boot(以Spring Boot 2.2.x为基础)
第六章 Spring Web MVC
第七章 数据访问(包含Spring Data JPA、Spring Data Elasticsearch和数据缓存)
第八章 安全控制(包含Spring Security和OAuth2)
第九章 响应式编程(包含Project Reactor、Spring WebFlux、Reactive NoSQL、R2DBC、Reactive Spring Security)
第十章 事件驱动(包含JMS、RabbitMQ、Kafka、Websocket、RSocket)
第11章 系统集成和屁股里(包含Spring Integration和Spring Batch)
第12章 Spring Cloud与微服务
第13章 Kubernetes与微服务(包含Kubernetes、Helm、Jenkins、Istio)
多谢大家支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值