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