hibernate criteria 和restriction 查询

来源:互联网 发布:石油钻井软件 编辑:程序博客网 时间:2024/04/28 22:37

Hibernate中条件查询,通过如下3个类完成。

Criteria:代表一次查询。

Criterion:代表一个条件查询。

Restrictions:产生条件查询的工具类。

执行条件查询的步骤:

1.       获取Hibernate的Session对象。

2.       以Session对象创建Criteria对象。

3.       使用Restrictions的静态方法创建Criterion查询条件。

4.       向Criteria添加Criterion查询条件。

5.       执行Criteria的list等方法返回结果。

以下是一个小例子,利于理解:

Configuration c = new Configuration().configuration(); 
SessionFactory sf = c.buildSessionFactory(); 
Session s = sf.openSession(); 
Criteria t = s.createCriteria(User.class);//物件表名是User; 
List users = t.list(); 
for(Iterator it = user.iterator();it.hasnext()) 

User user = (User)it.next(); 
System.out.println(user.getUsername()+"\t"+user.getPassword()+"\t"+user.getAge()); 

一个不带where条件的基本的查询,把它翻译成SQL语句,相当于: 
select this_.username,this_.password,this_.age from user; 
用Criteria进行带条件的语句查询: 
Criteria t = s.createCriteria(User.class);//物件表名是User; 
t.add(Restrictions.gt("age", "20"));//选择age>20 
t.add(Restrictions.lt("age", "30"));//选择age<30 
t.addOrder(Order.desc("age"));//排序 
List users = t.list(); 
for(Iterator it = user.iterator();it.hasnext()) 

User user = (User)it.next(); 
System.out.println(user.getUsername()+"\t"+user.getPassword()+"\t"+user.getAge()); 

以上是对Criteria的使用和具体对应查询条件的方法做了简单的介绍。

Restrictions里面常用的方面具体如下:

Restrictions.eq--->等於 
Restrictions.gt--->大于 
Restrictions.ge--->大於等於 >= 
Restrictions.lt--->小於 < 
Restrictions.le--->小於等於 <= 
Restrictions.between--->对应SQL的BETWEEN子句 
Restrictions.like--->对应SQL的LIKE子句 
Restrictions.in--->对应SQL的in子句 
Restrictions.and--->and关系 
Restrictions.or--->or关系