歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Hibernate的2種查詢及分頁

很久都沒有使用hibernate做開發了,好多東西都有點生疏了。今天忽然想到了順便自己就復習了一下,覺得hibernate還是很方便的至少他提供了統一的分頁。開發就不會為換了數據庫而去修改大量的代碼了。

hibernate的查詢有這麼2種,一種是hql查詢,Criteria查詢。2種我覺得使用起來都比較方便

1.hql的帶參數查詢有一個小小的技巧,可以不用索引的方式

  1. Query q=session.createQuery("update StudentInfo set username=? where fid=?"); 
  2.             q.setString(0, "劉若英"); 
  3.             q.setInteger(1, 3); 

上面的這個是原始的寫法,還有一種更好使的就是把問號的地方換成    :參數的名稱  ,這樣就不用怕記錯順序了。

  1. Query q=session.createQuery("update StudentInfo set username=:username where fid=:fid"); 
  2.             q.setString("username", "劉若英"); 
  3.             q.setInteger("fid", 3); 

2.使用Criteria查詢數據,這種方式不需要寫hql語句,個人覺得簡單的使用這種方法也是足夠了。Restrictions帶有很多的查詢條件如or,in都有相應支持

  1. public void otherQuery() { 
  2.         Session session = null
  3.         Transaction tra = null
  4.         // 通過工具類取得session  
  5.         try { 
  6.             session = HibernateUtil.getSession(); 
  7.             tra = session.beginTransaction(); 
  8.             Criteria c=session.createCriteria(StudentInfo.class); 
  9.             //c.add(Restrictions.eq("username", "潘玮柏"));  
  10.                         c.add(Restrictions.or(Restrictions.lt("fid", 5))); 
  11.                         //從第一條開始查詢  
  12.                         c.setFirstResult(0); 
  13.                         //每次查詢10條數據  
  14.                         c.setMaxResults(10); 
  15.             List<StudentInfo> all = c.list(); 
  16.             //查詢單條數據  
  17.             //StudentInfo info=(StudentInfo)c.uniqueResult();  
  18.             for (StudentInfo studentInfo : all) { 
  19.                 System.out.println("姓名:"+studentInfo.getUsername()); 
  20.             } 
  21.             tra.commit(); 
  22.  
  23.         } catch (HibernateException e) { 
  24.             // TODO Auto-generated catch block  
  25.             e.printStackTrace(); 
  26.         } finally { 
  27.             if (session != null) { 
  28.                 session.close(); 
  29.             } 
  30.         } 
  31.     } 

同樣的查詢單條數據也可以使用get方法,大家可以自己試試,下面的分頁面試中經常有被問到,大家可以著重記錄依一下

  1. //從第一條開始查詢  
  2.  c.setFirstResult(0); 
  3.  //每次查詢10條數據  
  4.  c.setMaxResults(10); 
Copyright © Linux教程網 All Rights Reserved