Hibernate學習——查詢方式(HQL、Criteria、SQL)
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://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(); // 查詢並返回結果