Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询
生活随笔
收集整理的這篇文章主要介紹了
Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
hql語句和sql語句不同,當我們使用hql語句查詢時,要把SQL語句的表寫成 實體類的類名,字段寫成實體類的屬性
代碼如下:
我們應當注意這段代碼:
Query query = s.createQuery("from Customer");執行的hql語句是:from Customer
但如果我們使用sql,語句是:
其中我們可以發現,使用hql只要把sql的表名換成實體類名就可以了,而且 select * 都可以不要
代碼如下:
當我們使用條件查詢時,我們不僅要把表名換成實體類,還要把數據庫的列名換成屬性名:
from Customer where custName = ?然后使用下面代碼設置參數:
query.setString(0, "23");可以發現我把這些代碼注釋掉了,這些方法不夠具體,我們可以使用別名設置參數,如下代碼
from Customer where custName = :custName:后面的是別名,我們給參數賦值時可以使用一下代碼就不用考慮具體參數的類型了
query.setParameter("custName", "23");使用步驟:1、查詢語句需要使用new關鍵字
2、在實體類中添加對應參數列表的構造函數
代碼如下:
@Testpublic void test5() {Session s = HibernateUtils.getCurrentSession();Transaction t = s.beginTransaction();Query query = s.createQuery("select new domain.Customer(custId,custName) from Customer");List list = query.list();for(Object o : list) {System.out.println(o);}t.commit();}在實體類中添加對應參數列表的構造函數,注意無參構造函數實體類中一定不能省
public Customer(Long custId, String custName) {this.custId = custId;this.custName = custName;}注意在使用hql語句時,實體類要加上路徑,因為在一個工程里,當有多個相同類名,就不知道創建那個實體類了
總結
以上是生活随笔為你收集整理的Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate中把Session和线
- 下一篇: 王子变青蛙剧情介绍