`

Sprint @Query注解的用法(nativeQuery=true/false)(Spring Data JPA)

 
阅读更多
1. 一个使用@Query注解的简单例子
@Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")
List<Book> findByPriceRange(long price1, long price2);


2.Like表达式
@Query(value = "select name,author,price from Book b where b.name like %:name%")
List<Book> findByNameMatch(@Param("name") String name);


3. 使用Native SQL Query(nativeQuery=true则使用原生SQL默认HQL)
所谓本地查询,就是使用原生的sql语句(根据数据库的不同,在sql的语法或结构方面可能有所区别)进行查询数据库的操作。
@Query(value = "select * from book b where b.name=?1", nativeQuery = true)
List<Book> findByName(String name);


4. 使用@Param注解注入参数
@Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")
List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author,
        @Param("price") long price);


5. SPEL表达式(使用时请参考最后的补充说明)
'#{#entityName}'值为'Book'对象对应的数据表名称(book)。
public interface BookQueryRepositoryExample extends Repository<Book, Long>{
       @Query(value = "select * from #{#entityName} b where b.name=?1", nativeQuery = true)
       List<Book> findByName(String name);

}


6. 一个较完整的例子
public interface BookQueryRepositoryExample extends Repository<Book, Long> {
    @Query(value = "select * from Book b where b.name=?1", nativeQuery = true) 
    List<Book> findByName(String name);// 此方法sql将会报错(java.lang.IllegalArgumentException),看出原因了吗,若没看出来,请看下一个例子

    @Query(value = "select name,author,price from Book b where b.price>?1 and b.price<?2")
    List<Book> findByPriceRange(long price1, long price2);

    @Query(value = "select name,author,price from Book b where b.name like %:name%")
    List<Book> findByNameMatch(@Param("name") String name);

    @Query(value = "select name,author,price from Book b where b.name = :name AND b.author=:author AND b.price=:price")
    List<Book> findByNamedParam(@Param("name") String name, @Param("author") String author,
            @Param("price") long price);

}



分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    详解Spring Data JPA使用@Query注解(Using @Query)

    Spring Data JPA 使用 @Query 注解 Spring Data JPA 是一个基于 Java Persistence API(JPA)的数据访问技术,它提供了一种简洁的方式来访问数据库。在 Spring Data JPA 中,我们可以使用 @Query 注解来定义查询...

    在JPA的@Query注解中使用limit条件(详解)

    JPA @Query 注解中使用 Limit 条件详解 在 Java 持久层 API(JPA)中使用 @Query 注解时,需要注意 Limit 条件的使用。在本文中,我们将详细介绍如何在 JPA 的 @Query 注解中使用 Limit 条件。 Limit 条件的使用 ...

    spring注解+spring data jpa文档+JPA文档.rar

    "spring data jpa官方文档中文翻译"则提供了Spring Data JPA的详细指南,包括其设计原理、基本概念、使用方法和最佳实践。"JPA2.0官方文档"则深入讲解了JPA规范的各个方面,包括实体管理、查询、事务和并发控制等。 ...

    使用JPA中@Query 注解实现update 操作方法(必看)

    在本例中,我们使用的是原生的SQL语句(因为`nativeQuery = true`),更新`info`表中`status`字段,使其值等于传递的`status`参数,条件是`id`字段等于传递的`id`参数。 2. **@Modifying**:这个注解告诉JPA该方法...

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    **Spring Data JPA** 是一个基于 **Java** 的开源框架,它是 **Spring Framework** 的一个模块,主要用于简化 **Java Persistence API (JPA)** 的使用。JPA 是 Java 平台上的一个标准,用于管理和持久化应用程序的...

    后端 Java Spring Data Jpa @Transactional 介绍

    在Java后端开发中,Spring框架提供了强大的事务管理能力,特别是在使用Spring Data JPA时,`@Transactional`注解使得事务处理变得简单易用。这个注解是Spring框架中的核心部分,它允许开发者声明性地控制事务边界,...

    Spring Data JPA 笔记

    至于压缩包中的“helloworld”文件,可能是一个简单的示例项目,通常会包含一个基础的Spring Data JPA配置,一个实体类,以及对应的Repository接口,用于展示Spring Data JPA的基本用法。通过查看这个例子,你可以更...

    Spring Data JPA API(Spring Data JPA 开发文档).CHM

    Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。

    Spring Data JPA从入门到精通

    7. **Query方法**:Spring Data JPA允许通过方法名自动推断查询逻辑,如findByXXX(),同时支持自定义@Query注解写入SQL或HQL查询。 8. **事务管理**:Spring Data JPA利用Spring的事务管理能力,通过@Transactional...

    Spring Data JPA入门项目02

    6. 原生查询:对于JPA无法处理的复杂查询,Spring Data JPA还提供了`@Query nativeQuery = true`选项,允许我们编写原生的SQL查询。 在"Spring Data JPA入门项目02"中,你将学习如何在实际项目中应用这些概念,创建...

    spring data jpa 动态更新@DynamicUpdate

    在Java世界中,Spring Data JPA是一个非常流行的框架,它为开发者提供了与关系数据库交互的便利,通过简化JPA(Java Persistence API)的使用。在处理大量数据时,提高性能和效率是至关重要的,这就是`@...

    Spring Data JPA的优点和难点.pdf

    - Spring Data JPA支持DQL(Domain Query Language)风格的方法命名,使得查询语句的编写变得直观且易于理解。例如,`findByLastnameIgnoreCase` 方法会忽略大小写进行查询,`...

    SpringData@Query的注释的代码实现

    在Java开发领域,Spring Data是一个强大的框架,它简化了数据访问层的实现,尤其是在使用JPA(Java Persistence API)时。`@Query`是Spring Data JPA提供的一个关键注解,用于执行自定义的SQL或者HQL(Hibernate ...

    spring data jpa1.7 中文

    ### Spring Data JPA 1.7 核心知识点解析 #### 一、项目元数据 - **版本控制**: 项目的版本控制托管于 GitHub (http://github.com/spring-projects/spring-data-jpa),用户可以通过该链接查看源码、提交代码等。 -...

    优秀实践分享 Spring Data JPA2

    JPA 使用@Query注解实现JPQL和本地自定义查询 JPA API 条件查询 (子查询,多表连接查询) JPA结合QueryDSL轻松完成复杂查询(自连接,多表连接查询) 参与文档: Pro JPA2中文版:精通Java持久化API 优秀博文读书笔记: ...

    spring data jpa 教程

    本教程将详细介绍 Spring Data JPA 的核心概念与使用方法,帮助开发者从基础入门到实现复杂查询的完整过程。 第一章:Spring Data JPA 入门 Spring Data JPA 简化了 JPA(Java Persistence API)的开发,通过约定...

    Spring Boot整合SpringDataJPA

    Spring Data JPA还支持更复杂的查询,如使用`@Query`注解编写自定义SQL或者HQL,或者使用` Specifications`进行动态查询。此外,它还提供了事务管理、懒加载、级联操作等特性,使得数据访问更加灵活和强大。 在实际...

    Spring Data JPA.zip

    - **强大的查询支持**:除了简单的 CRUD 方法,Spring Data JPA 还支持基于方法名的复杂查询,甚至可以使用 JPA Querydsl 或 Specification 进行更复杂的查询。 - **事务管理**:Spring Data JPA 结合 Spring 的事务...

Global site tag (gtag.js) - Google Analytics