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关系