JPA(Java Persistence API)學習十六(JPQL基本操作)
阿新 • • 發佈:2020-09-09
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
<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