1. 程式人生 > >Hibernate條件查詢之HQL和QBC

Hibernate條件查詢之HQL和QBC

一、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();
	}
}