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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM