Hibernate條件查詢之HQL和QBC
阿新 • • 發佈:2019-01-04
一、HQL查詢
HQL(Hibernate Query Language)是一種面向物件的查詢語言,依賴於Query類,每個Query例項對應一個查詢物件。查詢步驟如下:
1)獲取Hibernate Session物件
2)編寫HQL語句
3)以HQL語句作為引數,呼叫session的createQuery()方法建立查詢條件
4)如果HQL語句包含引數,則呼叫Query的setXxx()方法為引數賦值
5)呼叫Query物件的list()或uniqueResult()方法返回查詢結果列表(持久化實體集)
/** * HQL條件查詢 */ @Test public void demo2(){ Session session = HibernateUtil.openSession(); Transaction transaction = session.beginTransaction(); Query Query = session.createQuery("from Student s where s.name like :value"); Query.setParameter("value", "趙%"); List<Student> list = Query.list(); for (Student Student : list) { System.out.println(Student); } Query query = session.createQuery("from Student s where s.name like ?"); query.setParameter(0, "趙%"); List<Student> list1 = query.list(); for (Student Student : list1) { System.out.println(Student); } transaction.commit(); }
二、QBC查詢
QBC(Query By Criteria) API提供了檢索物件的另一種方式,它主要由Criteria介面、Criterion介面和Expresson類組成,它支援在執行時動態生成查詢語句。
執行條件查詢的步驟如下:
1)獲得Hibernate的Session物件
2)以Session物件建立Criteria物件
3)使用Restrictions的靜態方法建立Criterion查詢條件
4)向Criteria查詢中新增Criterion查詢條件
5)執行Criteria的list()或uniqueResult()方法返回結果集
/** * QBC條件查詢 */ @Test public void demo3(){ Session session = HibernateUtil.openSession(); Transaction transaction = session.beginTransaction(); Criteria Criteria = session.createCriteria(Student.class); List list = Criteria.add(Restrictions.like("name", "趙%")).list(); for (Object object : list) { System.out.println(object); } transaction.commit(); } }