hql条件查询,条件查询通过如下3个类完成:
Criteria:代表一次查询。
Criterion:代表一个查询条件。
Restrictions:产生查询条件的工具类。
执行条件查询的步骤如下:
(1)获得Hibernate的Session对象。
(2)以Session对象创建Criteria对象。
(3)使用Restrictions的静态方法创建Criterion查询条件。
(4)向Criteria查询中体检Criterion查询条件。
(5)执行Criteria的list等方法返回结果集。
代码片段如下:
List l = session.createCriteria(Student.class)
//此处增加限制条件必须是Student已经存在的属性
.add(Restrictions.get(“studentNumber”, 20050231L))
//如果要增加对Student的关联类的属性的限制
//则必须重新createCriteria()
//如果此关联属性是集合,则只要集合里任意一个对象的属性满足下面条件即可
.createCriteria(“enrolments”)
.add(Restrictions.gt(“semester”,2))
.list();
在条件查询中,Criteria接口代表依次查询,该查询本身不具备任何的数据筛选功能,Session调用createCriterial(Class clazz)方法对某个持久化类创建条件查询实例。
Criteria对象不具备任何的数据筛选功能,但程序可以通过向Criteria对象中组合多个Criterion(每个Criterion对象代表一个过滤条件)即可实现数据过滤了。
Criterion接口代表一个查询条件,该查询条件由Restrictions负责产生。Restrictions是专门用于产生查询条件的工具类,它的方法大部分都是静态方法,常用的方法如下:
(1)static Criteion allEq(Map propertyNameValues):判断指定属性(由Map参数的key指定)和指定值(由Map参数的value指定)是否完全相等。
(2)static Criterion between(String propertyName, Object lo, Object hi):判断属性值在某个指范围之内。