Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询
生活随笔
收集整理的這篇文章主要介紹了
Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
hql語句和sql語句不同,當(dāng)我們使用hql語句查詢時,要把SQL語句的表寫成 實體類的類名,字段寫成實體類的屬性
代碼如下:
我們應(yīng)當(dāng)注意這段代碼:
Query query = s.createQuery("from Customer");執(zhí)行的hql語句是:from Customer
但如果我們使用sql,語句是:
其中我們可以發(fā)現(xiàn),使用hql只要把sql的表名換成實體類名就可以了,而且 select * 都可以不要
代碼如下:
當(dāng)我們使用條件查詢時,我們不僅要把表名換成實體類,還要把數(shù)據(jù)庫的列名換成屬性名:
from Customer where custName = ?然后使用下面代碼設(shè)置參數(shù):
query.setString(0, "23");可以發(fā)現(xiàn)我把這些代碼注釋掉了,這些方法不夠具體,我們可以使用別名設(shè)置參數(shù),如下代碼
from Customer where custName = :custName:后面的是別名,我們給參數(shù)賦值時可以使用一下代碼就不用考慮具體參數(shù)的類型了
query.setParameter("custName", "23");使用步驟:1、查詢語句需要使用new關(guān)鍵字
2、在實體類中添加對應(yīng)參數(shù)列表的構(gòu)造函數(shù)
代碼如下:
@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();}在實體類中添加對應(yīng)參數(shù)列表的構(gòu)造函數(shù),注意無參構(gòu)造函數(shù)實體類中一定不能省
public Customer(Long custId, String custName) {this.custId = custId;this.custName = custName;}注意在使用hql語句時,實體類要加上路徑,因為在一個工程里,當(dāng)有多個相同類名,就不知道創(chuàng)建那個實體類了
總結(jié)
以上是生活随笔為你收集整理的Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate中把Session和线
- 下一篇: Struts2一对多配置