自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

簡(jiǎn)述Hibernate在HQL中查詢(xún)實(shí)例

開(kāi)發(fā) 后端
Hibernate查詢(xún)包括支持字符串方式參數(shù)傳遞查詢(xún)、傳遞參數(shù)查詢(xún)、支持多參數(shù)傳遞、調(diào)用數(shù)據(jù)庫(kù)里面的函數(shù)、直接支持sql查詢(xún)、進(jìn)行導(dǎo)航查詢(xún)、分頁(yè)查詢(xún)。

我們學(xué)習(xí)Hibernate查詢(xún)是知道HQL支持條件查詢(xún),分為好多方面,這里我們就具體Hibernate查詢(xún)用實(shí)例來(lái)加以說(shuō)明,希望對(duì)讀者的學(xué)習(xí)帶來(lái)幫助。

1、支持字符串方式參數(shù)傳遞查詢(xún):

例子:

  1. List students = session.createQuery("select s.id,s.name from Student s where s.name like '%1' ").list();  
  2.             for (Iterator iter=students.iterator(); iter.hasNext();) {  
  3.                 Object[] o = (Object[])iter.next();  
  4.                 System.out.println(o[0]+","+o[1]);  
  5.             } 

由于,涉及到多個(gè)屬性查詢(xún),所以返回的是Object數(shù)組類(lèi)型。

2、支持類(lèi)似于PrepareStatement方式的?傳遞參數(shù)查詢(xún)

例子:

  1. List students = session.createQuery("select s.id,s.name from Student s where s.name like :goodname ")  
  2.                                                 .setParameter("goodname", "%1%").list();  
  3.             for (Iterator iter=students.iterator(); iter.hasNext();) {  
  4.                Object[] o = (Object[])iter.next();  
  5.                System.out.println(o[0]+","+o[1]);  
  6.            } 

要設(shè)置參數(shù)從0開(kāi)始,見(jiàn)第2行。

3、去變量方式參數(shù)傳遞

例子:

  1. List students = session.createQuery("select s.id,s.name from Student s where s.name like :goodname ")  
  2.                                                 .setParameter("goodname", "%1%").list();  
  3.             for (Iterator iter=students.iterator(); iter.hasNext();) {  
  4.                Object[] o = (Object[])iter.next();  
  5.                 System.out.println(o[0]+","+o[1]);  
  6.            } 

這個(gè)跟2中的相似,只是多了參數(shù)可以歸為一類(lèi)。

4、支持多參數(shù)傳遞

例子:

  1. List students = session.createQuery("select s.id, s.name from Student s where s.id in(:myids)")  
  2.             .setParameterList("myids", new Object[]{1, 2, 3, 4, 5,32,13,14})  
  3.                 .list();  
  4.             for (Iterator iter=students.iterator(); iter.hasNext();) {  
  5.                 Object[] o = (Object[])iter.next();  
  6.                 System.out.println(o[0]+","+o[1]);  
  7.             } 

注意調(diào)用方法是setParameterList。

5、調(diào)用數(shù)據(jù)庫(kù)里面的函數(shù)

例子:

  1. List students = session.createQuery("select s.id, s.name from Student s where date_format(s.createTime, '%Y-%m')=?")  
  2.            .setParameter(0, "2008-10")  
  3.                 .list();  
  4.            for (Iterator iter=students.iterator(); iter.hasNext();) {  
  5.                 Object[] o = (Object[])iter.next();  
  6.                System.out.println(o[0]+","+o[1]);  
  7.            } 

數(shù)據(jù)庫(kù)函數(shù)date_format。

6、直接支持sql查詢(xún)

例子:

  1. List students = session.createSQLQuery("select *from t_student").list();  
  2.             for (Iterator iter=students.iterator(); iter.hasNext();) {  
  3.                Object[] o = (Object[])iter.next();  
  4.                 System.out.println(o[0]+","+o[1]);  
  5.            } 

只需要調(diào)用session里面的createSQLQuery方法即可。

7、進(jìn)行導(dǎo)航查詢(xún)

例子:

  1. List students = session.createQuery("select s.name from Student s where s.classes.name like '%1%'").list();  
  2.             for (Iterator iter=students.iterator(); iter.hasNext();) {  
  3.                String s = (String)iter.next();  
  4.                 System.out.println(s);  
  5.             } 

這種查詢(xún)很方便。

8、分頁(yè)查詢(xún)

例子:

  1. List students = session.createQuery("from Student").setFirstResult(0).setMaxResults(3).list();  
  2.             for (Iterator iter=students.iterator(); iter.hasNext();) {  
  3.                 Student student = (Student)iter.next();  
  4.                 System.out.println(student.getName());  
  5.             } 

這是很簡(jiǎn)單的分頁(yè)查詢(xún),分頁(yè)查詢(xún)實(shí)現(xiàn)比這個(gè)復(fù)雜多了,分頁(yè)查詢(xún)采用的相當(dāng)于數(shù)據(jù)庫(kù)里面的 limit ,來(lái)限制一次查詢(xún)顯示的條數(shù)。

注:還有一些其他就不一一列舉了,Hibernate查詢(xún)?cè)贖ibernate的使用中HQL查詢(xún)語(yǔ)言如果用得好,會(huì)給工作帶來(lái)比較高的效率,比較重要,而且還有一個(gè)查詢(xún)效率的問(wèn)題,這涉及到緩存等方面,以后會(huì)更新這方面的文章。

【編輯推薦】

  1. 簡(jiǎn)述Hibernate中加載并存儲(chǔ)對(duì)象
  2. Hibernate傳播性持久化攻略
  3. 深入了解Hibernate自動(dòng)狀態(tài)檢測(cè)
  4. 教你如何在Hibernate中實(shí)例化集合和代理
  5. Hinerbate單端關(guān)聯(lián)代理頗析
責(zé)任編輯:仲衡 來(lái)源: blogjava
相關(guān)推薦

2009-06-18 09:14:08

Hibernate H

2009-09-23 18:05:48

2009-09-24 10:35:10

Hibernate查詢(xún)

2009-06-29 18:26:46

HibernateHQL查詢(xún)

2009-09-23 09:16:25

Hibernate復(fù)合

2009-06-12 15:32:01

Hibernate H

2009-09-24 10:15:37

Hibernate查詢(xún)

2009-09-22 08:39:59

Hibernate F

2009-06-26 16:09:21

Hibernate查詢(xún)HQL

2014-05-12 10:37:41

2009-09-24 11:17:32

Hibernate查詢(xún)

2009-09-29 16:41:58

Hibernate S

2009-09-27 14:56:22

Hibernate H

2009-06-30 16:55:19

2009-09-29 15:58:22

Hibernate映射

2009-09-28 11:12:52

Hibernate O

2009-09-29 10:37:29

Hibernate持久

2011-03-24 11:37:41

Hibernate

2009-09-25 12:31:13

Hibernate映射

2009-09-28 13:45:59

Hibernate歷史
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)