Hibernate中Restrictions类的方法简介(转)

org.hibernate.criterion.Restrictions

HQL(Hibernate Query Language) 和 Criteria   都是面向对象的查询,只不过Criteria更面向对象,Criteria和Restrictions这个类连用来实现条件查询

下面给出一个小例子:

这里只列出其中一个页面,其它页面都没有列出,主要是让大家看看Query和Criteria怎么用

首先是Query的用法:

 1 package cn.itcast.hibernate.domain;
 2 import java.util.ArrayList;
 3 import java.util.Date;
 4 import java.util.List;
 5 import org.hibernate.Query;
 6 import org.hibernate.Session;
 7 import cn.itcast.hibernate.method.MethodManager;
 8 public class QueryTest {
 9 /**
10 * @param args
11 */
12 public static void main(String[] args) {
13    User user = new User();
14   
15    for(int i=1; i<5; i++) {
16     user.setName("Aaron"+i);
17     user.setBirthday(new Date());
18     MethodManager.addUser(user);//保存数据
19    }
20    User ss = new User();
21    ss.setName("Aaron1");
22    ss.setBirthday(new Date());
23    MethodManager.addUser(ss);
24   
25    User ss1 = new User();
26    ss1.setName("Aaron1");
27    ss1.setBirthday(new Date());
28 MethodManager.addUser(ss1);
29   
30   query("Aaron1");
31 }
32 @SuppressWarnings("unchecked")
33 static void query(String userName){
34    Session session = null;
35    try{
36     session = HibernateUtils.getSession();
37     String hql = "from User user where user.name = ?";
38     //String hql1 = "from User user where user.name.birthday is not null"; //多个属性不为空
39     //String hql = "from User as user where user.name = :ss";
40     Query query = session.createQuery(hql);
41     query.setString(0, userName);//问号的位置从0开始
42    //query.setString("ss", userName);//当多个问号时,可以指定别名,这样可以防止混乱
43    
44     query.setFirstResult(0);//表示从结果集的第一条记录开始
45     query.setMaxResults(10);//表示每次取20条记录,这样可以实现跨数据库分页     
46    List<User> list = query.list();
47    /* Iterator<User> iterator = query.iterate();
48     while(iterator.hasNext()){
49      System.out.println(iterator.next().getName());
50     } */
51    
52     //User u = (User)query.uniqueResult();//确定独一无二的结果
53     //System.out.println(u);
54    
55 /*   List names = new ArrayList();
56     names.add("Aaron1");
57     names.add("Aaron2");
58     Query q = session.createQuery("from User user where user.name in (:naa) order by user.birthday desc");
59     q.setParameterList("naa", names);
60    
61     List<User> cats = q.list();
62     for(User userList : cats){
63      System.out.println(userList.getName()+","+userList.getBirthday());
64     }
65     *///查询条件是一个集合
66   
67     for(User userList : list){
68      System.out.println(userList.getName()+","+userList.getBirthday());
69     }
70    } finally {
71     if(session!=null)
72      session.close();//必须关闭session
73    }
74 }
75 }

Criteria的用法:

package cn.itcast.hibernate.domain;
import java.util.Date;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import cn.itcast.hibernate.method.MethodManager;
public class CriteriaQuery {
/**
* @param args
*/
public static void main(String[] args) {
   User user = new User();
  
   for(int i=1; i<5; i++) {
    user.setName("Aaron"+i);
    user.setBirthday(new Date());
    MethodManager.addUser(user);//保存数据
   }
   User ss = new User();
   ss.setName("Aaron1");
   ss.setBirthday(new Date());
   MethodManager.addUser(ss);
  
   User ss1 = new User();
   ss1.setName("Aaron1");
   ss1.setBirthday(new Date());
   MethodManager.addUser(ss1);
  
   query("Aaron1");
}
@SuppressWarnings("unchecked")
static void query(String userName){
   Session session = null;
   try{
    //Criteria和Restrictions实现条件查询
    session = HibernateUtils.getSession();
    Criteria criteria = session.createCriteria(User.class);
    criteria.add(Restrictions.eq("name", userName));
    criteria.add(Restrictions.le("birthday", new Date()));//多个add表示与
   // criteria.add(Restrictions.or(Restrictions.eq("name", userName), Restrictions.eq("name", "Aaron2")));//表示逻辑或,表示名字为Aaron和Aaron1的都查询出来
   criteria.addOrder(Order.desc("id")); //按照id倒序
    //criteria.setFirstResult(0);
    //criteria.setMaxResults(30);
    List<User> list = criteria.list();
    for(User userList : list){
     System.out.println(userList.getName()+","+userList.getBirthday());
    }
   } finally {
    if(session!=null)
     session.close();//必须关闭session
   }
}
}

文章出处:http://hi.baidu.com/quandang/item/18cc13dc228b2c50d63aaec0

posted @ 2013-11-06 11:09  hibaidu  阅读(5531)  评论(0编辑  收藏  举报