JavaEE(17) - JPA查询API和JPQL
1. 获取查询结果
2. JPQL函数和JPQL表达式
#1. 使用from子句
#2. 查询部分属性
#3. 查询中使用构造器
3. JPQL的关联查询和多态查询
#1. 多态查询
#2. 隐式连接
#3. 显式连接
4. 对查询结果集进行分页
5. 使用JPQL子查询和命名查询
#1. 子查询
#2. 命名查询
6. JPQL的批量更新和删除
#1. 批量更新
#2. 批量删除
--------------------------------------------------
1. 获取查询结果(Net Beans创建Java Project, 项目名称:JpqlQs)
JpaQs.java
package lee; import java.util.List;
import javax.persistence.*; import org.crazyit.model.*; public class JpaQs { private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("qs"); public static void main(String[] args) {
EntityManager em = emf.createEntityManager();
try {
em.getTransaction().begin();
Query query = em.createQuery("select news , news.title , news.content"
+ " from News as news where news.id > ?1 and"
+ " news.title not like :title"); List result = query.setParameter(1, 1).setParameter("title", "%Java%").getResultList();
for (int i = 0; i < result.size(); i++) {
Object[] row = (Object[]) result.get(i);
for (int j = 0; j < row.length; j++) {
System.out.println(row[j]);
}
}
em.getTransaction().commit();
}
finally {
em.close();
}
}
}
News.java(参见12.2)
persistence.xml(参见12.2)
2. JPQL函数和JPQL表达式
#1. 使用from子句(Net Beans创建Java Project, 项目名称:From)
JpaQs.java
package lee; import java.util.List;
import javax.persistence.*; import org.crazyit.model.*; public class JpaQs { private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("qs"); public static void main(String[] args) {
EntityManager em = emf.createEntityManager();
try {
em.getTransaction().begin();
Query query = em.createQuery("from News as news where news.id < ?1"
+ " and news.title like :title"); List result = query.setParameter(1, 8).setParameter("title", "%Java%").getResultList(); for (int i = 0; i < result.size(); i++) {
News news = (News) result.get(i);
System.out.println(news.getTitle() + "-->" + news.getContent());
} em.getTransaction().commit();
}
finally {
em.close();
}
}
}
News.java(参见12.2)
persistence.xml(参见12.2)
#2. 查询部分属性(Net Beans创建Java Project, 项目名称:SubProperty)
JpaQs.java
package lee; import java.util.List;
import javax.persistence.*; import org.crazyit.model.*; public class JpaQs { private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("qs"); public static void main(String[] args) {
EntityManager em = emf.createEntityManager();
try { em.getTransaction().begin();
Query query = em.createQuery("select news.title , news.content"
+ " from News as news where news.id < ?1"
+ " and news.title like :title"); List result = query.setParameter(1, 8).setParameter("title", "%Java%").getResultList();
for (int i = 0; i < result.size(); i++) {
Object[] values = (Object[]) result.get(i);
System.out.println(values[0] + "-->" + values[1]);
} em.getTransaction().commit();
}
finally {
em.close();
}
}
}
News.java(参见12.2)
persistence.xml(参见12.2)
#3. 查询中使用构造器(Net Beans创建Java Project, 项目名称:Constructor)
NewsDTO.java
package org.crazyit.dto;
public class NewsDTO {
private String title;
private String content;
// constructor
// setter
// getter
}
JpaQs.java
package lee; import java.util.List;
import javax.persistence.*; import org.crazyit.model.*; public class JpaQs { private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("qs");
public static void main(String[] args) {
EntityManager em = emf.createEntityManager();
try {
em.getTransaction().begin();
Query query = em.createQuery("select distinct new org.crazyit.dto.NewsDTO(news.title"
+ " , news.content) from News as news where news.id < ?1"
+ " and news.title like :title"); List result = query.setParameter(1, 8).setParameter("title", "%Java%").getResultList();
for (int i = 0; i < result.size(); i++) {
System.out.println(result.get(i));
} em.getTransaction().commit();
}
finally {
em.close();
}
}
}
News.java(参见12.2)
persistence.xml(参见12.2)
3. JPQL的关联查询和多态查询
#1. 多态查询(Net Beans创建Java Project, 项目名称:PolyQuery)
News.java(参见12.2)
persistence.xml(参见12.2)
#2. 隐式连接(Net Beans创建Java Project, 项目名称:ImplicitJoin)
News.java(参见12.2)
persistence.xml(参见12.2)
#3. 显式连接(Net Beans创建Java Project, 项目名称:ExplicitJoin)
News.java(参见12.2)
persistence.xml(参见12.2)
4. 对查询结果集进行分页(Net Beans创建Java Project, 项目名称:Paging)
News.java(参见12.2)
persistence.xml(参见12.2)
5. 使用JPQL子查询和命名查询
#1. 子查询(Net Beans创建Java Project, 项目名称:SubQuery)
News.java(参见12.2)
persistence.xml(参见12.2)
#2. 命名查询(Net Beans创建Java Project, 项目名称:NamedQuery)
News.java(参见12.2)
persistence.xml(参见12.2)
6. JPQL的批量更新和删除
#1. 批量更新(Net Beans创建Java Project, 项目名称:Update)
News.java(参见12.2)
persistence.xml(参见12.2)
#2. 批量删除(Net Beans创建Java Project, 项目名称:Delete)
News.java(参见12.2)
persistence.xml(参见12.2)
JavaEE(17) - JPA查询API和JPQL的更多相关文章
- JavaEE(18) - JPA原生SQL查询和存储过程
1. 使用原生SQL执行查询 2. 映射原生SQL查询的结果集 3. 使用原生SQL查询执行实体查询 4. 命名原生SQL查询 5. 在JPQL查询中调用存储过程
- JavaEE高级-JPA学习笔记
*JPA概述 *JPA是什么? - Java Persistence API :用于对象持久化的API - Java EE 5.0平台标准的ORM规范,使得应用程序以统一的方式访问持久化层 - JPA ...
- Spring JPA 查询创建
Spring JPA 查询创建 这是JPA内容的核心部分,可以收藏用作参阅文档. 1. 查询转化和关键字 例:一个JPA查询的转化 public interface UserRepository ex ...
- 快递查询API接口(trackingmore)
快递查询接口 目前提供快递查询的接口平台有: Trackingmore 快递100 快递网 不同接口的区别: (1)Trackingmore支持380家快递公司,其中有55家为国内的快递,其余325家 ...
- 各种快递查询--Api接口
授权成功我的密钥 爱查快递API使用说明文档 API地址: 以前:http://api.ickd.cn/?com=[]&nu=[]&id=[]&type=[]&enco ...
- JPA查询单个字段和多个字段返回类型总结
原文地址:https://blog.csdn.net/weixin_40326509/article/details/80865646 在使用springboot中,需要使用JPQL和SQL去查询记录 ...
- spring data jpa查询部分字段、多余附加字段
spring data jpa查询部分字段 第一种方法:使用 model 查询时转化 首先建立一个 model ,写上自己想要查询的字段,然后写上构造函数,这步很重要,因为spring jpa 转化时 ...
- 记一次JPA查询分页导致的数据丢失问题
使用JPA查询,共17条数据,每页10条数据. 第一页与第二页有一条重复的数据,导致丢失一条数据 后查明原因发现,该查询使用了排序,排序字段的值在多条数据中相同,比如在3-11条是相同的值.此时跳到第 ...
- Hibernate 查询方式、JPA查询方式
hibernate 查询方式: OID 查询 对象导航查询 HQL 方式查询 QBC方式查询 原生SQL方式查询 JPA 查询方式: OID 查询 对象导航查询 JPQL 方式查询 CriteriaB ...
随机推荐
- Android调试优化篇
为了开发出商业级的应用程序,大规模的測试是不可避免的,同一时候为了提高应用程序的执行速度,须要进行必要的优化.在Android中.提供了丰富的调试与优化工具供开发者应用,主要包含模拟器和目标端等两种场 ...
- 【夸QT十一】外来物品:通用脚本帮助Web运行基础Linux命令
需求分析: 需要注意的是在这里第一次,这个人是不是QT系列文章,它是关于Web的,之所以写这篇文章.这是因为碍着Web相关开发时间,而且往往涉及linux与底层指令处理.例如,创建一个文件夹,删除一个 ...
- 调用API 清屏
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24521483 下面App基本都有下拉刷新的功能,以前基本都使用XListView ...
- centos7关闭防火墙(转)
直接命令:service firewalld stop 1. Disable Firewalld Service. [root@rhel-centos7-tejas-barot-linux ~]# s ...
- t持久化与集群部署开发详解
Quartz.net持久化与集群部署开发详解 序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我 ...
- UVA - 12130 Summits
Description Problem G - Summits Time limit: 8 seconds You recently started working for the largest m ...
- hdu4288 Coder(段树+分离)
主题链接: huangjing 题意: 题目中给了三个操作 1:add x 就是把x插进去 2:delete x 就是把x删除 3:sum 就是求下标%5=3的元素的和. 另一个条件是插入和删除最后 ...
- ArcPad 10 的安装部署
ArcPad是安装在手持设备或者移动终端的一个外业ArcGIS产品,也就是说ArcPad是Esri的一款软件产品,而不是硬件设备哦.尽管不比ArcGIS Desktop功能复杂缤纷,可是对于野外作业. ...
- HDU 1228 A + B 浙江大学研究生冠军
Problem Description 读入两个小于100的正整数A和B,计算A+B. 须要注意的是:A和B的每一位数字由相应的英文单词给出. Input 測试输入包括若干測试用例,每一个測试用例 ...