JPA(Java Persistence API)学习十六(JPQL基本操作)
1.概述
JPQL允许我们创建静态和动态查询。 现在,我们将在下表中使用这两种查询来执行一些基本的JPQL操作。
2.JPQL动态查询示例
第一步:创建实体类StudentEntity
import javax.persistence.*;
          @Entity
@Table(name = "student")
public class StudentEntity {
@Table(name = "student")
public class StudentEntity {
               @Id
private int s_id;
private String s_name;
private int s_age;
}
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>
<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();
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) {
@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 {
@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;
}
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();
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) {
@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();
emf.close();
3.JPQL批量查詢
   第一步:创建一个名为
StudentEntity.java的实体类   第二步:创建xml文件
   第三步:执行
          EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
         EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.getTransaction().begin();
         Query query = em.createQuery("Select s from StudentEntity s ");
         @SuppressWarnings("unchecked")
List<StudentEntity> list = (List<StudentEntity>) query.getResultList();
List<StudentEntity> list = (List<StudentEntity>) query.getResultList();
          System.out.print("s_id");
System.out.print("\t s_name");
System.out.println("\t s_age");
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();
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();
em.getTransaction().begin();
     Query query = em.createQuery("update StudentEntity SET s_age=25 where s_id>103");
query.executeUpdate();
query.executeUpdate();
     em.getTransaction().commit();
em.close();
emf.close();
em.close();
emf.close();
5.JPQL删除记录
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
    EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.getTransaction().begin();
    Query query = em.createQuery("delete from StudentEntity where s_id=102");
    query.executeUpdate();
    em.getTransaction().commit();
em.close();
emf.close();
em.close();
emf.close();
6.JPQL高级查询
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
    EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
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();
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");
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());
}
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();
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");
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());
}
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();
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");
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());
}
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();
em.close();
emf.close();
7.JPQL聚合
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("Student_details");
    EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.getTransaction().begin();
    Query q1 = em.createQuery("Select count(s) from StudentEntity s");
System.out.println("Number of Student : " + q1.getSingleResult());
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());
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();
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();
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();
List<StudentEntity> l1 = (List<StudentEntity>) q1.getResultList();
    System.out.print("s_id");
System.out.print("\t s_name");
System.out.println("\t s_age");
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());
}
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();
em.close();
emf.close();
学习来源:https://www.yiibai.com/jpa/jpa-jpql-bulk-data-operations.html#article-start
                    
                
                
            
        
浙公网安备 33010602011771号