Hibernate条件查询之HQL和QBC

版权声明:转载请注明作者:sust_ly https://blog.csdn.net/pycharm_u/article/details/84454438

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


 

猜你喜欢

转载自blog.csdn.net/pycharm_u/article/details/84454438