常用的一些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);//設定從幾個開始查詢