1. 程式人生 > >常用的一些HQL查詢語句詳解(1)

常用的一些HQL查詢語句詳解(1)

最近學了HQL查詢語句,發現查詢內容比較瑣碎,現在整理一些比較常用的HQL語句分享給大家,查詢的表有一下三種:Category、Topic、Msg;其中 Category與Topic是一對多的關係,Topic與Msg是一對多的關係。解釋完畢,現在開始介紹常用的HQL語句:

1.簡單的查詢Category表裡的全部內容:

Query q = session.createQuery("from Category");
 List<Category> categories = (List<Category>)q.list();

2.根據條件(id>5)查詢Category表裡的所有內容:

Query q = session.createQuery("from Category c where c.id >= 5");
 List<Category> categories = (List<Category>)q.list();

3.按照Category物件裡面的name屬性進行‘降序’排序,並出去重複(降序關鍵詞:desc),查出表裡的所有內容

Query q = session.createQuery("from Category c order by c.name desc");
 List<Category> categories = (List<Category>)q.list();

4. 用distinct去掉重複的行、order by  語句用於根據指定的列對結果集進行排序、查處符合條件的所有內容

Query q = session.createQuery("select distinct c from Category c order by c.name desc");
 List<Category> categories = (List<Category>)q.list();

5.取出id大於min並小於max的所有內容,用setParameter設定HQL語句裡的值

Query q = session.createQuery("from Category c where c.id > :min and c.id < :max");
       q.setParameter("min", 2);
        q.setParameter("max", 8);

List<Category> categories = (List<Category>)q.list();

6.同上,setParameter的另外一種用法,設定HQL語句裡的值。

Query q = session.createQuery("from Category c where c.id > ? and c.id < ?");
       q.setParameter(0, 2)
        q.setParameter(1, 8);
       List<Category> categories = (List<Category>)q.list();

7.查詢所有內容用order by 按照name進行排序、desc進行倒序;

Query q = session.createQuery("from Category c order by c.name desc");
        q.setMaxResults(4);//設定擷取查詢結果的最大值
        q.setFirstResult(2);//設定從幾個開始查詢