1. 程式人生 > 實用技巧 >JPA(Java Persistence API)學習十六(JPQL基本操作)

JPA(Java Persistence API)學習十六(JPQL基本操作)

1.概述

JPQL允許我們建立靜態和動態查詢。 現在,我們將在下表中使用這兩種查詢來執行一些基本的JPQL操作。

2.JPQL動態查詢示例

第一步:建立實體類StudentEntity

import javax.persistence.*;

@Entity
@Table(name = "student")
public class StudentEntity { @Id
private int s_id;
private String s_name;
private int s_age;
} 第二步:配置xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

<persistence-unit name="Student_details">
<class>com.yiibai.jpa.StudentEntity</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url"

value="jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password"
value="123456" />
<property name="eclipselink.logging.level" value="SEVERE" />
<property name="eclipselink.ddl-generation"
value="create-or-extend-tables" />
</properties>
</persistence-unit>
</persistence> 第三步:執行 EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin(); Query query = em.createQuery("Select s.s_name from StudentEntity s");
@SuppressWarnings("unchecked")
List<String> list = query.getResultList();
System.out.println("Student Name :");
for (String s : list) { System.out.println(s); } 2.JPQL靜態查詢示例 使用createNamedQuery()方法從資料庫中獲取單個列的值。 第一步:建立StudentEntity.java,加上靜態查詢@NamedQuery import javax.persistence.*; @Entity
@Table(name = "student")
@NamedQuery(name = "find name", query = "Select s from StudentEntity s")
public class StudentEntity { @Id
private int s_id;
private String s_name;
private int s_age;
} 第二步:執行(這裡是預設已經配置了外部元資料) EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Query query = em.createNamedQuery("find name");
@SuppressWarnings("unchecked")
List<StudentEntity> list = query.getResultList();
System.out.println("Student Name :");
for (StudentEntity s : list) { System.out.println(s.getS_name()); } em.close();
emf.close(); 3.JPQL批量查詢 第一步:建立一個名為StudentEntity.java的實體類 第二步:建立xml檔案 第三步:執行 EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Query query = em.createQuery("Select s from StudentEntity s "); @SuppressWarnings("unchecked")
List<StudentEntity> list = (List<StudentEntity>) query.getResultList();
System.out.print("s_id");
System.out.print("\t s_name");
System.out.println("\t s_age");
for (StudentEntity s : list) {
System.out.print(s.getS_id());
System.out.print("\t" + s.getS_name());
System.out.print("\t" + s.getS_age());
System.out.println();
}
em.getTransaction().commit();
em.close();
emf.close();
4.JPQL更新記錄 EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Query query = em.createQuery("update StudentEntity SET s_age=25 where s_id>103");
query.executeUpdate();
em.getTransaction().commit();
em.close();
emf.close();
5.JPQL刪除記錄 EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Query query = em.createQuery("delete from StudentEntity where s_id=102"); query.executeUpdate(); em.getTransaction().commit();
em.close();
emf.close();
6.JPQL高階查詢 EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Query q1 = em.createQuery("Select s from StudentEntity s where s.s_age between 22 and 28"); @SuppressWarnings("unchecked")
List<StudentEntity> l1 = (List<StudentEntity>) q1.getResultList();
System.out.println("Between Clause");
System.out.print("s_id");
System.out.print("\t s_name");
System.out.println("\t s_age");
for (StudentEntity s : l1) {
System.out.print(s.getS_id());
System.out.print("\t" + s.getS_name());
System.out.println("\t" + s.getS_age());
}
Query q2 = em.createQuery("Select s from StudentEntity s where s.s_age IN(20,22,23)"); @SuppressWarnings("unchecked")
List<StudentEntity> l2 = (List<StudentEntity>) q2.getResultList();
System.out.println("IN Clause");
System.out.print("s_id");
System.out.print("\t s_name");
System.out.println("\t s_age");
for (StudentEntity s : l2) {
System.out.print(s.getS_id());
System.out.print("\t" + s.getS_name());
System.out.println("\t" + s.getS_age());
}
Query q3 = em.createQuery("Select s from StudentEntity s where s.s_name like '%a%'"); @SuppressWarnings("unchecked")
List<StudentEntity> l3 = (List<StudentEntity>) q3.getResultList();
System.out.println("Like Clause");
System.out.print("s_id");
System.out.print("\t s_name");
System.out.println("\t s_age");
for (StudentEntity s : l3) {
System.out.print(s.getS_id());
System.out.print("\t" + s.getS_name());
System.out.println("\t" + s.getS_age());
}
em.getTransaction().commit();
em.close();
emf.close();
7.JPQL聚合 EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Query q1 = em.createQuery("Select count(s) from StudentEntity s");
System.out.println("Number of Student : " + q1.getSingleResult());
Query q2 = em.createQuery("Select MAX(s.s_age) from StudentEntity s");
System.out.println("Maximum age : " + q2.getSingleResult());
Query q3 = em.createQuery("Select MIN(s.s_age) from StudentEntity s");
System.out.println("Minimum age : " + q3.getSingleResult());
em.getTransaction().commit();
em.close();
emf.close();
8.JPQL排序 EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Query q1 = em.createQuery("Select s from StudentEntity s order by s.s_age desc"); @SuppressWarnings("unchecked")
List<StudentEntity> l1 = (List<StudentEntity>) q1.getResultList();
System.out.print("s_id");
System.out.print("\t s_name");
System.out.println("\t s_age");
for (StudentEntity s : l1) {
System.out.print(s.getS_id());
System.out.print("\t" + s.getS_name());
System.out.println("\t" + s.getS_age());
}
em.getTransaction().commit();
em.close();
emf.close();
學習來源:https://www.yiibai.com/jpa/jpa-jpql-bulk-data-operations.html#article-start