Hibernate架構的批量查詢有三種實作方式:
-
HQL
-
Criteria
-
SQL
這三種方式無論過程有什麼不同,最終結果都是通過sql語句實作查詢操作。
HQL是Hibernate架構封裝好的一種查詢語言
基本操作:
// String hql="select * from com.huhu.domain.Customer "; // 書寫HQL語句
String hql="from com.huhu.domain.Customer ";
// String hql="from Customer ";
Query query = session.createQuery(hql); // 根據HQL語句建立Query 查詢操作對象
List<Customer> list = query.list(); // 查詢并傳回集合
上面的操作就是查詢資料庫中所有 Customer的資訊。如果前面是select * (查詢所有),則可以省略不寫。
- 注意:HQL語句中,不會出現表的任何表名、列名等字段資訊,而是出現對象的實體類名和屬性名,HIbernate會根據配置檔案中的配置來轉換為對應的表名和列名,如果實體類名在項目中沒有與其重複的類,可以簡寫實體類名,而不寫全包名
Criteria查詢(無語句查詢方式)
基本操作:
Criteria criteria = session.createCriteria(Customer.class); // 建立面向對象查詢對象,注意:此種建立方法已經過時,新方法還在學習中-- -.- --
List<Customer> list = criteria.list(); // 查詢所有對象資訊并傳回集合
以上同樣是實作查詢資料庫中所有 Customer的資訊。當然還可以添加查詢條件(相當于sql中的where):如
criteria.add(Restrictions.eq("cust_id" , 1l )); // 查詢id為1的Customer對象(因為cust_id類型為Long是以寫1l)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSPJRVT4dmeONTVU1kenRVTxgmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLzIzMxITO0UTMzAjMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
擷取自以下頁面:https://www.cnblogs.com/deng-cc/p/6428599.html
Sql查詢就寫個例子吧,不多說:
基本操作:
String sql = "select * from cst_customer "; // 建立sql查詢語句
SQLQuery query = session.createSQLQuery(sql); // 根據sql語句建立查詢方式
query.addEntity(Customer.class); // 添加查詢對象
List<Customer> list = query.list(); // 查詢并傳回結果