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的更多相关文章

  1. JavaEE(18) - JPA原生SQL查询和存储过程

    1. 使用原生SQL执行查询 2. 映射原生SQL查询的结果集 3. 使用原生SQL查询执行实体查询 4. 命名原生SQL查询 5. 在JPQL查询中调用存储过程

  2. JavaEE高级-JPA学习笔记

    *JPA概述 *JPA是什么? - Java Persistence API :用于对象持久化的API - Java EE 5.0平台标准的ORM规范,使得应用程序以统一的方式访问持久化层 - JPA ...

  3. Spring JPA 查询创建

    Spring JPA 查询创建 这是JPA内容的核心部分,可以收藏用作参阅文档. 1. 查询转化和关键字 例:一个JPA查询的转化 public interface UserRepository ex ...

  4. 快递查询API接口(trackingmore)

    快递查询接口 目前提供快递查询的接口平台有: Trackingmore 快递100 快递网 不同接口的区别: (1)Trackingmore支持380家快递公司,其中有55家为国内的快递,其余325家 ...

  5. 各种快递查询--Api接口

    授权成功我的密钥 爱查快递API使用说明文档 API地址: 以前:http://api.ickd.cn/?com=[]&nu=[]&id=[]&type=[]&enco ...

  6. JPA查询单个字段和多个字段返回类型总结

    原文地址:https://blog.csdn.net/weixin_40326509/article/details/80865646 在使用springboot中,需要使用JPQL和SQL去查询记录 ...

  7. spring data jpa查询部分字段、多余附加字段

    spring data jpa查询部分字段 第一种方法:使用 model 查询时转化 首先建立一个 model ,写上自己想要查询的字段,然后写上构造函数,这步很重要,因为spring jpa 转化时 ...

  8. 记一次JPA查询分页导致的数据丢失问题

    使用JPA查询,共17条数据,每页10条数据. 第一页与第二页有一条重复的数据,导致丢失一条数据 后查明原因发现,该查询使用了排序,排序字段的值在多条数据中相同,比如在3-11条是相同的值.此时跳到第 ...

  9. Hibernate 查询方式、JPA查询方式

    hibernate 查询方式: OID 查询 对象导航查询 HQL 方式查询 QBC方式查询 原生SQL方式查询 JPA 查询方式: OID 查询 对象导航查询 JPQL 方式查询 CriteriaB ...

随机推荐

  1. 关于产品的一些思考——腾讯之QQ音乐

    --------------------2014.5.11-------------------- 原来一直使用小米手机自带的音乐播放器,除了搜歌下载不方便,其它的还好(省电是最大的长处),用过Jin ...

  2. [置顶] android系统如何在静音模式下关闭camera拍照声音(2)

    之前写过一篇“android系统如何在静音模式下关闭camera拍照声音”的博客,今天来写他的续篇,继续探讨这个问题. 公司新需求,要求在camera应用中添加一个开关,可以进行拍照声音的关闭和开启. ...

  3. 03.Msbuild

    MSBuild的深入认识 分类: 专题开发 自动化 2009-01-20 11:56 5711人阅读 评论(1) 收藏 举报 任务引擎脚本工作扩展build 最近在从事自动构造工作的过程中,对MSBu ...

  4. hdu 2391 Filthy Rich

    单纯dp 水一 处理时间点,第一行和第一列特殊处理: 其余的w[i][j]=show(w[i-1][j-1],w[i-1][j],w[i][j-1]); <span style="fo ...

  5. HIPO图

    HIPO图(Hierarchy Plus Input/Processing/Output)是表示软件结构的一种图形工具.以模块分解的层次性以及模块内部输入.处理.输出三大基本部分为基础建立的.它由两部 ...

  6. HTML——博客页面布局

    HTML文件 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/htm ...

  7. Apache HTTP Server 与 Tomcat 的三种连接方式介绍(转)

    首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接.事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端 ...

  8. hdu3844 Mining Your Own Business,无向双连接组件

    点击打开链接 无向图的双连通分量 #include<cstdio> #include<stack> #include<vector> #include<map ...

  9. UVA 538 - Balancing Bank Accounts(贪心)

    UVA 538 - Balancing Bank Accounts 题目链接 题意:给定一些人的欠钱关系,要求在n-1次内还清钱,问方案 思路:贪心,处理出每一个人最后钱的状态,然后直接每一个人都和最 ...

  10. HDU 4391 Paint The Wall 段树(水

    意甲冠军: 特定n多头排列.m操作 以下是各点的颜色 以下m一种操纵: 1 l r col 染色 2 l r col 问间隔col色点 == 通的操作+区间内最大最小颜色数的优化,感觉非常不科学... ...