JSQL查詢


JSQL

其特征與原生soL語句類似,並且完全面向對象,通過類名和屬性訪問,而不是表名和表的屬性。

  • sql:查詢的是表和表中的字段
  • jpql:查詢的是實體類和類中的屬性

 

查詢全部   >> getResultList:直接將查詢結果封裝為list集合

    sq1:SELECT * FROM cst_customer

    jsql:from cn.itcast.domain.Customer (包名可以省略)

 1 package cn.itcast.test;
 2 import cn.itcast.utils.JpaUtils;
 3 import org.junit.Test;
 4 
 5 import javax.persistence.*;
 6 import java.util.List;
 7 /**
 8  * 測試Jpql查詢
 9  */
10 public class JpqlTest {
11     /*
12      *查詢全部
13      *jsql:from cn.itcast.domain.Customer  (包名可以省略) 14      *sq1:SELECT * FROM cst_customer
15      */
16     @Test
17     public void testFindAll() {
18         //1.獲取entityManager對象
19         EntityManager em = JpaUtils.getEntityManager();
20         //2.開啟事務
21         EntityTransaction tx = em.getTransaction();
22         tx.begin();
23         //3.查詢全部
24         String jpql = "from Customer"; 25         //調用em.createQuery(jpql)先創建一個對象query,接收一個jsql語句 26         //創建Query查詢對象,query對象才是執行jqp1的對象
27         Query query = em.createQuery(jpql);
28         //發送查詢,並封裝結果集
29         List list = query.getResultList();
30         //遍歷list並打印
31         for (Object o : list) {
32             System.out.println(o);
33         }
34         //4.提交事務
35         tx.commit();
36         //5.釋放資源
37         em.close();
38     }}
  • 使用jpql查詢,統計客戶的總數  >> getSingleResult:得到唯一的結果集

    sq1:SELECT COUNT(cust_id)FROM cst_customer

    jpql: select count(custId)from Customer

 

  • 分頁查詢  

    >> getResultList:直接將查詢結果封裝為list集合

    sq1:select*from cst_customer limit?,?   只寫2,默認是0,2
    jqp1:from Customer

 

 1 @Test
 2     public void testPage() {
 3         //1.獲取entityManager對象
 4         EntityManager em = JpaUtils.getEntityManager();
 5         //2.開啟事務
 6         EntityTransaction tx = em.getTransaction();
 7         tx.begin();
 8         //3.查詢全部
 9         String jpql = "from Customer";
10         //根據jsql語句創建Query查詢對象
11         Query query = em.createQuery(jpql);
12 
13         //起始索引
14         query.setFirstResult(0); 15         //每頁查詢的條數
16         query.setMaxResults(2); 17 
18         //發送查詢,並封裝結果集
19         List list = query.getResultList();
20         //遍歷list並打印
21         for (Object o : list) {
22             System.out.println(o);
23         }
24         //4.提交事務
25         tx.commit();
26         //5.釋放資源
27         em.close();
28     }}

 

案例:查詢客戶名稱以“黑馬”開頭的客戶  >> getResultList:直接將查詢結果封裝為list集合

  sq1:SELECT * FROM cst_customer WHERE cust_name LIKE ?
  jpql :  from Customer where custName like ?

1         //1.查詢全部
2         String jpql = "from Customer where custname like ? ";
3         //2.根據jsql語句創建Query查詢對象
4         Query query = em.createQuery(jpql);
5 
6         //3.對參數賦值--占位符參數
7         //第一個參數:占位符的索引位置(從1開始),第二個參數:取值
8         query.setParameter(1,"黑馬%");    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM