SpringDataJPA(5)jpql查询

article/2025/10/13 19:33:57

JPQL全称Java Persistence Query Language

这是JPA提供的复杂查询

sql:查询的是表和表中的字段
jpql:查询的是实体类和类中的属性

jpql和sql语句的语法相似

进行sql查询的步骤

1.创建query查询对象
2.对参数进行赋值
3.查询,并得到返回结果

1. 查询全部

/*** 查询全部*      jpql:from cn.yy.domain.Customer*      sql:select * from cst_customer*/@Testpublic void testFindAll(){//1.通过工具类获取entityManagerEntityManager entityManager = JpaUtils.getEntityManager();//2.开启事务EntityTransaction tx = entityManager.getTransaction();tx.begin();//3.查询全部String sql = "from cn.yy.domain.Customer";//直接写Customer也可以Query query = entityManager.createQuery(sql);//创建Query查询对象,query对象才是执行jpql的对象//发送查询并封装结果集List list = query.getResultList();for(Object obj:list){System.out.println(obj);}//4.提交事务tx.commit();//5.释放资源entityManager.close();}

运行结果

在这里插入图片描述

2.分页查询

/*** 使用jpql查询,分页查询*      sql:select * from cst_customer limit ?,?*      jpql:from Customer*/@Testpublic void testPage(){//1.通过工具类获取entityManagerEntityManager entityManager = JpaUtils.getEntityManager();//2.开启事务EntityTransaction tx = entityManager.getTransaction();tx.begin();//3.查询全部//这里面的order by之后的内容可以修改为其他字段的String sql = "from Customer";//根据注解id倒序查询Query query = entityManager.createQuery(sql);//创建Query查询对象,query对象才是执行jpql的对象//对参数进行赋值:分页参数//起始索引query.setFirstResult(0);//从0开始查,不包含0//每页查询的条数query.setMaxResults(3);//每页显示两条//发送查询并封装结果集/*** getResultList:直接将查询结果封装为list集合* getSingleResult:获得唯一的结果集*/List list = query.getResultList();for(Object obj:list){System.out.println(obj);}//4.提交事务tx.commit();//5.释放资源entityManager.close();}

运行结果:

在这里插入图片描述

3.统计查询

/*** 使用jpql查询,查询客户的总数*      sql:select count(cust_id) from cst_customer*      jpql:select count(custId) from Customer*/@Testpublic void testCount(){//1.通过工具类获取entityManagerEntityManager entityManager = JpaUtils.getEntityManager();//2.开启事务EntityTransaction tx = entityManager.getTransaction();tx.begin();//3.查询全部//这里面的order by之后的内容可以修改为其他字段的String sql = "select count(custId) from Customer";//根据注解id倒序查询Query query = entityManager.createQuery(sql);//创建Query查询对象,query对象才是执行jpql的对象//发送查询并封装结果集/*** getResultList:直接将查询结果封装为list集合*  getSingleResult:获得唯一的结果集*/Object singleResult = query.getSingleResult();System.out.println(singleResult);//4.提交事务tx.commit();//5.释放资源entityManager.close();}

运行结果:

在这里插入图片描述

4.条件查询

/*** 使用jpql查询,根据条件查询:查询industry以学开头的*      sql:select * from cst_customer where cust_industry like ?*      jpql:from Customer where custIndustry like ?*/@Testpublic void testCondition(){//1.通过工具类获取entityManagerEntityManager entityManager = JpaUtils.getEntityManager();//2.开启事务EntityTransaction tx = entityManager.getTransaction();tx.begin();//3.查询全部//这里面的order by之后的内容可以修改为其他字段的String sql = "from Customer where custIndustry like ?";//根据注解id倒序查询Query query = entityManager.createQuery(sql);//创建Query查询对象,query对象才是执行jpql的对象//对参数进行赋值:占位符参数//第一个参数:占位符的索引位置(从1开始),第二个参数:取值query.setParameter(1,"学%");//发送查询并封装结果集/*** getResultList:直接将查询结果封装为list集合* getSingleResult:获得唯一的结果集*/List list = query.getResultList();for(Object obj:list){System.out.println(obj);}//4.提交事务tx.commit();//5.释放资源entityManager.close();}

运行结果:

在这里插入图片描述
在这里插入图片描述

5.排序

/*** 排序查询:倒序查询全部客户 (根据id倒序)*      sql:select * from cst_customer order by cust_id DESC;*      jpql:from Customer order by custId desc*/@Testpublic void testOrder(){//1.通过工具类获取entityManagerEntityManager entityManager = JpaUtils.getEntityManager();//2.开启事务EntityTransaction tx = entityManager.getTransaction();tx.begin();//3.查询全部//这里面的order by之后的内容可以修改为其他字段的String sql = "from Customer order by custId desc";//根据注解id倒序查询Query query = entityManager.createQuery(sql);//创建Query查询对象,query对象才是执行jpql的对象//发送查询并封装结果集List list = query.getResultList();for(Object obj:list){System.out.println(obj);}//4.提交事务tx.commit();//5.释放资源entityManager.close();}

运行结果:

在这里插入图片描述


http://chatgpt.dhexx.cn/article/52rdxoJU.shtml

相关文章

JPA的查询语言JPQL

JPA的查询语言(JPQL)是一种和SQL非常类似的中间性和对象化查询语言。它可以被编译成不同的底层数据库能接受的SQL,从而屏蔽不同数据库的差异,确保用JPQL查询语言编写的代码可在不同的数据库上运行。比起EJB 2.1的查询语言,EJB3可以运行期构造…

JPQL语句

JPQL语言 JPQL语言,即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的 SQL 查询,从而屏蔽不同数据库的差异。 JPQL语言的语句可以是 select 语句、upda…

jpa之jpql查询

JPQL介绍 JPQL语言,即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的 SQL 查询,从而屏蔽不同数据库的差异。如果会hibernate的hql查询,那…

SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询

上一篇介绍了入门基础篇SpringDataJPA访问数据库。本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询、部分字段映射、分页等。本文尽量以简单的建模与代码进行展示操作,文章比较长,包含查询的方方面面。如果能耐心看完这篇文…

JPA之JPQL

文章目录 什么是JPQL?JPQL怎么用?JPQL的查询demoJPQL的占位符与入参问题修改demo删除demo插入demo 什么是JPQL? 所谓JPQL,就是Java Persistence Query Language的缩写,也就是java持久化查询语言.JPQL是一种可移植的查询语言&am…

JPQL-Query查询实例详解

前面学习了JPQL语言和Query接口。这里学习一下如果通过JPQL和Query接口进行数据的查询、更新和删除。 【1】普通查询 首先说明一下FROM子句和Select…FROM。 from 子句是查询语句的必选子句。 Select 用来指定查询返回的结果实体或实体的某些属性。 From 子句声明查询源实体…

JPQL和SQL的比较

前言 在JAVA EE中,JPQL是专门为Java 应用程序访问和导航实体实例设计的。Java Presistence Query Language(JPQL),java持久性查询语言。它是JPA规范的重要组成部分,其实它就是一种查询语言,语法类似于SQL语法,但是有着…

【JPQL】--JPQL和SQL的比较

前言 在JAVA EE中,JPQL是专门为Java 应用程序访问和导航实体实例设计的。Java Presistence Query Language(JPQL),java持久性查询语言。它是JPA规范的重要组成部分,其实它就是一种查询语言,语法类似于SQL语法,但是有着…

JPA - JPQL完成复杂的多表查询

目录 前言示例建表语句Entity实体JPQL多表查询完整代码调用结果 前言 JPA中可以通过设置实体的导航属性 JPQL完成复杂的多表查询,简化SQL的编写。 示例 建表语句 Table CREATE TABLE school (id int(11) DEFAULT NULL,name varchar(50) COLLATE utf8_unicode_c…

JPQL查询

JPQL查询 1 jpql的介绍 sql:查询的是表和表中的字段。 jpql:查询的是实体类和类中的属性。 jpql和sql语句的语法相似。 JPQL全称Java Persistence Query Language 基于首次在EJB2.0中引入的EJB查询语言(EJB QL),Java持久化查询语言(JPQL)是一种可移植的…

JPQL详解

前提 最近在改bug的时候发现了自己的缺点,在改前端bug的时候非常顺利顺手。但是在改后端bug的时候如果遇到不是太难的问题还可以解决,但是一到难点感觉自己就懵逼! 所以讲解了关于JPQl相关内容 JPA 在说jpql之前必须要说一下什么是JPA&…

JPA(4) JPQL一些简单的查询语法

JPQL --> JPA Query Language --> JPA的查询语句 (另外HQL:Hibernate的查询语句) JPQL本质:JPA通过antlr-2.7.7.jar将JPQL编译成sql并且封装执行的。 JPQL和SQL区别?? --> 它们查询的关键字都是一样的&#xff…

HPROF内存文件获取

1.命令生成Dump内存文件 命令&#xff1a;am dumpheap 进程名 输出文件目录<文件名.hprof> 如&#xff1a; am dumpheap app …/demo.hprof 2.通过Android Studio获取 在Android Studio中使用Android Monitor里的Memory Monitor工具监视内存使用情况时&#xff0c;可以…

jvm调优-hprof 文件打开

当服务器出现内存溢出的情况&#xff0c;要下载分析dump内存文件“ dump 当前进程的内存信息: 通过命令 jsp获取java进程pid: jsp: 生成dump文件&#xff1a; jmap -dump:formatb,filedump.hprof pid在当前目录xiazaihprof文件到本地。 如何打开hprof后缀格式的文件呢&#…

使用adb命令导出hprof文件

我们可以使用android studio profiler导入hprof文件分析android应用的内存问题。那么如何从手机上面导出这份文件呢&#xff1f; 把应用的heap 区的数据取出来保存在一个hprof文件上&#xff0c;然后把hprof文件导入到可以查看这个文件的工具上&#xff08;如android studio p…

jvisualvm分析hprof文件

jvisualvm是jdk8的bin目录下自带的一个分析工具&#xff0c;在我下载的jdk11下没有这个工具&#xff0c;这个工具我们可以用来分析hprof文件 首先我们可以配置对应的参数&#xff0c;配置文件地址在\jdk8\lib\visualvm\etc\visualvm.conf visualvm_default_options"-J-cl…

android studio 分析 hprof,Android Studio 中的 HProf静态分析

HProf 在 Android Studio 中的展示详解&#xff0c;基于我对其的理解&#xff0c;我将其根据 heap,count,size,其他将其分成了 4 个层次。 第一层 Heap 分类 Heap 共分为&#xff1a; zygote heap: 与 android zygote 进程共享的 heap image heap: 与系统共享的 heap app heap&…

JProfile 分析OOM hprof文件

JProfile 分析OOM OutOfMemoryError 1.JVM组成 首先要明白JVM组成 方法区-非堆 Method Area、No-HeapJava栈-虚拟机栈 VM Stack、Java Stack本地方法栈 Native Method Stack程序计数器 Program Counter Register堆 Heap 1.1 OOM发生在哪里? OOM可以发生在除了程序计数器外…

java如何打开hprof_hprof是什么文件?如何打开hprof?

hprof是什么文件&#xff1f;如何打开hprof&#xff1f; 发布时间&#xff1a;2020-03-26 17:35:24 来源&#xff1a;亿速云 阅读&#xff1a;1195 作者&#xff1a;小新 hprof是什么文件&#xff1f;如何打开hprof&#xff1f;很多人都不太了解&#xff0c;今天小编为了让大家…

linux命令生成hprof文件,Android平台生成任意进程的hprof文件

一、知识介绍 1.1 为什么要抓取hprof hprof文件中记录了当前进程内存的使用情况,对于一些难以解决的OOM问题,提取出对应进程的hprof文件可以很好的分析这种问题。 分析hprof的工具 Java Heap Analyzes Tool Eclipse Memory Analyzer 1.2 生成hprof指令 adb shell am dumpheap…