在hibernate中,有下列比較常用的查詢語句:
1、hql (hibernate query language)
2、criteria queries (條件查詢)
3、native queries(原生態sql語句查詢)
最常用的就是hql,那麼 使用hql進行查詢,又分為:單錶查詢,一對多和多對多查詢,多表查詢。
首先我們來說一下單錶查詢:
就拿獲取所有課程來說,我們用hql語言查詢所有的classes。可以有如下方法:
1、listclasses=session.createquery("from classes").list();
這種方法得到的list結構為:
如果你細心觀察,應該看到,這個list是沒有使用泛型的,為什麼呢?看這個list裡面的結構:
這裡的每乙個得到的list裡面,是陣列。而第一種跟第三種list裡面的資料為物件。如果一定要帶引數查詢的話,看第三種方法,比較靠譜
3、listclasses=
session.createquery("select new cn.ansel.domain.classes(cid,cname)
from classes").list();
這種方法的目的是:我們想通過帶有引數來選擇所有的classes,但是又不想得到的結構為(第2種方法)那樣的情況。在這一步中,要保證classes有空參建構函式,這種方法得到的classes結構為:
大家可能觀察到,這種方法跟第一種 直接(「from classes」)得到的list集合的結構是一樣的,那麼為什麼還要這種呢?
比如說,當這個表中我們要用到的字段,就只有名字和id,但是這個表中的字段一共有幾十個,那麼如果還是利用第一種,查詢出所有字段的話,效率會降低,加上浪費記憶體,所以這種情況適合用這一種new的方法。
帶引數查詢單挑唯一資料:
public classes queryclassesbycondition()
如果對於上面**中的冒號感到不舒服的話,可以直接寫成問號
public classes queryclassesbycondition2()
上面兩種方法都可以查詢到結果 HQL查詢語句
hql基本查詢 單屬性和多屬性查詢 listlist session.createquery select name,code from province list for int i 0 i將多個查詢分裝成物件 listlist1 session.createquery select new pr...
hql簡單查詢語句
session中get 方法只能通過id來查詢結果 hibernate工具類的完善 hibernateutil public class hibernateutil static public static sessionfactory getsessionfactory public static...
hql語句查詢返回List Map
查詢其中幾個字段,新增new map 注意map裡的m是小寫的。也不需要匯入包,這樣通過query.list 出來的list裡存放的不再是預設的object陣列了,而是map集合了 string hql select new map name,passwd from users query quer...