Spring Data JPA - 如何创建查询(5) @Query

Spring Data JPA @Query查询 1.声明@Query public interface UserRepository extends JpaRepository<User, Long> { @Query("select u from User u where u.emailAddress = ?1") User findByEmailAddress(String emailAddress); } 2.like查询 public interface UserRepository extends JpaReposi. 阅读详情

作者简介

陈喆,现就职于中科院某研究所担任副研究员,专注于工业云平台、MES系统的设计与研发。

内容来源:https://docs.spring.io/spring-data/jpa/docs/2.0.9.RELEASE/reference/html/#jpa.query-methods.at-query

使用Named Query为实体创建查询适用于定义少量查询。Named Query需要声明在实体类上,但也可以使用Spring Data JPA 的@Query注解将查询绑定到repository的函数上。

注解到查询方法上的Query优先于Named Query。

下例演示使用@Query注解:

public interface UserRepository extends JpaRepository<User, Long> {

  @Query("select u from User u where u.emailAddress = ?1")
  User findByEmailAddress(String emailAddress);
}

使用LIKE表达式

在@Query中使用like表达式:

public interface UserRepository extends JpaRepository<User, Long> {

  @Query("select u from User u where u.firstname like %?1")
  List<User> findByFirstnameEndsWith(String firstname);
}

在上例中,算法会识别出LIKE的分隔符(%),然后将查询转换成有效的JPQL查询语句(移除%).

本地查询

@Query注解通过设置nativeQuery标识支持执行本地查询语句:

public interface UserRepository extends JpaRepository<User, Long> {

  @Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
  User findByEmailAddress(String emailAddress);
}

Spring Data JPA目前不支持在本地查询中进行动态排序,因为这需要操作实际的查询语句,而这对于原生SQL是不可靠的。但你可以通过指定count查询实现分页查询:

public interface UserRepository extends JpaRepository<User, Long> {

  @Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1",
    countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1",
    nativeQuery = true)
  Page<User> findByLastname(String lastname, Pageable pageable);
}

 

 

Spring Data JPA入门-JPQL和命名查询 JPQL和命名查询 在使用Spring Data JPA的过程中,框架通过解析方法名称的方式生成对应的SQL,确实为我们减少了很多的工作量,但是,也特殊情况,需要我们手写SQL,当然,这里是JPQL(一种面向对象的SQL语法结构) 使用@Query注解创建查询,将该注解贴在dao的方法上,然后提供一个需要的JPQL语句即可,如: @Query("SELECT p FROM Person p... 阅读详情

相关推荐

华为BEM战略解码体系完整版(85页PPT)(文末有下载方式)

在部门层面,战略解码的核心是将公司战略逐层分解到部门,确保部门目标能够有效支撑公司战略。战略解码的关键原则包括:对公司战略和业务目标的支撑、指标选取考虑部门责任特色、对公司业务流程的支撑、战略解码,华为公司实现了从战略制定到执行的闭环管理,确保了战略目标能够通过可衡量的。战略解码,华为公司实现了从战略制定到执行的闭环管理,确保了战略目标能够通过可衡量的。战略解码体系的核心目标是将公司战略逐层分解,确保战略目标能够通过可衡量的。在公司层面,战略解码的第一步是战略澄清,明确公司的使命、愿景、战略目标及。

AI_data_cloud的博客 2400

Jpa之@Query的使用

/** * 本周注册人数 * * @return */ @Query(nativeQuery = true, value = "SELECT COUNT(1) AS num FROM `user` WHERE YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW())") Integer weekTotalNum(); /** * 查询注册用户数 ...

netuser1937的博客 1648

看完这篇爽文我终于学会了示波器(一)

示波器基础篇的介绍,希望对你有用,下次分享一下如何测试。

qq_45508321的博客 973

SpringData JPA联表分页查询需要使用countQuery属性

定义一个特殊的count查询,用于分页查询时,查找页面元素的总个数。如果没有配置,将根据方法名派生一个count查询。属性中与计数查询一起提供。此查询在结果查询之后单独执行,其结果用于填充返回的 Page 的 totalCount 属性。countQuery用于分页,如果要求分页结果返回正确的总计数,属性计算出总数的话,会在查询的时候进行报错。进行分页查询的时候,如果不是用。...

叉叉不低头 3320

OpenWrt国内镜像源一键切换脚本:清华/阿里/中科大源全搞定

本文介绍了OpenWrt国内镜像源一键切换脚本,支持清华、阿里和中科大三大源,自动识别设备架构和系统版本,显著提升软件包安装速度和成功率。脚本包含架构自动识别、版本适配、多源选择和配置备份等功能,适用于x86_64、ramips/mt7621等常见架构,帮助用户解决海外源访问缓慢的问题。

g5h6i的博客 1175

Sentaurus TCAD 修改字体

如题

努力学习的IC小白 5760

Spring Data JPA 从入门到精通~@Query详解

语法及其源码 public @interface Query { /** * 指定JPQL的查询语句。(nativeQuery=true的时候,是原生的Sql语句) */ String value() default ""; /** * 指定count的JPQL语句,如果不指定将根据query自动生成。 * (如果当nativeQuery=true的时候,指的是原生的Sql语句) */ String countQuery() default

小强快跑~~ 3110

故障排查:OpenClaw 更新后 feishu 插件路径失效的解决方法

OpenClaw 更新后 feishu 插件路径失效的解决方法发现问题→ Gateway 启动失败,报插件路径错误定位原因→ OpenClaw 目录结构变化,→解决问题→ 更新为正确的路径验证修复→ 使用确认一切正常。

刘一说的IT专栏 1304

Spring Data JPA 框架使用自定义(@Query)的查询语句返回自定义的实体对象踩坑记录

使用Spring Data Jpa,根据业务需求,有时候需要进行复杂的数据查询,并返回我们需要的字段(例如分类统计,目前框架下不需好实现),而在该框架下,目前仅仅支持返回数据库映射进行持久化的实体类(使用注解@Entity的类)。虽然在框架上我们可以使用@Query注解执行我们自定义的sql语句,但是其返回值为:List&lt;Object[]&gt; 类型,多个Object[]的List集合。 ...

tt____tt的专栏 1万+

【Windows Server 2019】邮件服务器配置与管理——安装及配置Winmail服务器(上)

博文介绍了如何安装邮件服务器 Winmail,如何配置Winmail,包括运行服务器,Winmail管理工具介绍和域名配置。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 2万+

56、CAN总线RC低通滤波器截止频率计算与实战

本文详细探讨了CAN总线RC低通滤波器的设计与应用。作者通过实际项目案例,分析了CAN总线噪声频谱特性,提出截止频率计算的"黄金法则",强调需考虑收发器输入阻抗的并联效应。文章给出RC参数选择的经验值(R=100Ω-1kΩ,C=10pF-100pF),并指出PCB布局的关键要点:RC应紧贴收发器引脚,电容接地端需直接连接地平面。最后建议结合示波器和眼图验证效果,并提醒RC滤波器只是抗干扰方案的一部分,良好的PCB布局设计才是根本。

2401_88858637的博客 70

spring data jpa 利用@Query进行查询

介绍@Query注释之前,先看看怎么利用@NamedQuery进行命名查询1.现在实体类上定义方法已经具体查询语句@Entity @NamedQuery(name = "Task.findByTaskName", query = "select t from Task t where t.taskName = ?1") public class Task{}2.然后我们继承接口之后,就可以直接用

打不死的小强 11万+

风控域——决策引擎系统设计

本文详细介绍了风控决策引擎系统的设计与应用。决策引擎系统是一种智能化工具,可自动化、数据驱动地辅助或替代人工决策,广泛应用于金融、医疗、营销、风控等领域。文章阐述了决策引擎的核心功能,包括自动化决策、动态规则管理、实时处理和模型集成,以及系统组成,涵盖数据输入层、规则引擎和模型服务层。此外,还探讨了决策引擎的典型应用场景、技术架构、组件设计,以及风控决策引擎系统的技术方案、设计难点和重点。

庄小焱 3320

Spring Data JPA 之 @Query 语法详解及其应用

5 Spring Data JPA 之 @Query 语法详解及其应用 5.1 快速体验 @Query 的方法 沿⽤我们之前的例⼦,新增⼀个 @Query 的⽅法: // 通过 query 注解根据 name 查询 user 信息 @Query("From User where name=:name") User findByQuery(@Param("name") String nameParam); 新增⼀个测试方法: @Test public void testQueryAnnotation() {

曾小二的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

@Query注解的用法(Spring Data JPA)

1. 一个使用@Query注解的简单例子 @Query(value = "select name,author,price from Book b where b.price&gt;?1 and b.price&lt;?2") List&lt;Book&gt; findByPriceRange(long price1, long price2);   2.  Like表达式 @Quer...

zpz_326的博客 5万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Spring-Data-Jpa关联查询

在service包下新建一个SchoolService类,代码如下(几个关联查询方法)@Service//注入数据访问层接口对象@Resource@Resource//事务管理//使用"-",驼峰式命名和@Query查询方式结果一致//遍历查询出的学生对象,提取姓名,年龄,性别信息。

2401_83412285的博客 1073

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

关于spring data jpa的@query的传入参数是对象怎么匹配参数

关于spring data jpa的@query的传入参数是对象怎么匹配参数 /** * Specifies methods used to obtain and modify person related information * which is stored in the database. * @author Petri Kainulainen */ public...

梓鸿 1万+

Spring Data JPA @Query注解用法

@Query注解 可以通过手写JPQL语句,实现数据库查询 package org.springframework.data.jpa.repository; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; ...

我的博客 1779

Spring Data JPA 原理与实战第三天 @Query详解

05 @Query 解决了什么问题?什么时候应该选择它? 上个课时我们介绍了 Query Define Method 的语法,这一课时来介绍一下 @Query 注解的语法是什么样的。我们通过快速体验 @Query 的方法、JpaQueryLookupStrategy 关键源码剖析、@Query 的基本用法、@Query 之 Projections 应用返回指定 DTO、@Query 动态查询解决方法,这几个部分来掌握 @Query 的用法。在学会了之后,你就可以应对工作中常见的 CURD 的写法问题。 快

fegus的博客 3883

Spring Data JPA 分页查询实战(@Query优化全解析)

掌握Spring Data JPA 的 @Query 分页技巧,高效解决复杂查询性能问题。适用于多条件动态分页场景,结合Pageable实现懒加载与SQL优化,提升系统响应速度。合理使用原生SQL与JPQL,避免N+1查询,显著增强可维护性。值得收藏的实战指南,点击了解优化细节。

PoliSeed的博客 1216

Spring Data JPA创建查询的三种方式

JPA JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 下面介绍Spring Data JPA中的三种创建查询的方式。 通过解析方法名创建查询 框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find、findBy、read、readBy、get、getB...

wunianisme的博客 1152

Spring Data JPA中@Query注解的使用与实例

除了使用@NamedQuery来声明查询外,Spring还提供了另一种方式,即通过@Query注解直接将查询语句绑定到仓库方法上。接着,我们调用了findMaxSalariesByDept方法,传入了Admin和IT部门,查询这两个部门的最高薪资,并打印结果。通过@Query注解,我们可以直接在Spring Data JPA的仓库方法上绑定JPQL查询语句,这种方式非常灵活且强大。在实际开发中,我们可以根据业务需求编写各种复杂的查询逻辑,从而提高开发效率和代码的可读性。一、@Query注解的基本使用。

m0_74337424的博客 1727

Spring Data JPA @Query注解

Spring Data提供了许多方法来定义我们可以执行的查询。其中之一是@Query注释。在本教程中,我们将演示如何。

allway2的博客 2040

spring boot jpa之 流式查询 @Query定义查询方法

一.概述 按照方法名来定义查询方法的形式,只适用于单表的一两个字段,那种复杂的查询,还要自己写sql语句,也就是@Query定义查询方法; 以下是:@Query和@Param的类路径 import org.springframework.data.jpa.repository.Query; import org.springframework.data.reposito...

懂哥的博客 3230
上一篇: Spring Data JPA - 如何创建查询(7) Named Parameters
下一篇: Spring Data JPA - 如何创建查询(6) 排序
Gavin 陈
博客等级 码龄20年 408粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值