程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Hibernate在HQL中查詢實例

Hibernate在HQL中查詢實例

編輯:關於JAVA

我們學習Hibernate查詢是知道HQL支持條件查詢,分為好多方面,這裡我們就具體Hibernate查詢用實例來加以說明,希望對讀者的學習帶來幫助。

1、支持字符串方式參數傳遞查詢:

例子:

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

由於,涉及到多個屬性查詢,所以返回的是Object數組類型。

2、支持類似於PrepareStatement方式的?傳遞參數查詢

例子:

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

要設置參數從0開始,見第2行。

3、去變量方式參數傳遞

例子:

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

這個跟2中的相似,只是多了參數可以歸為一類。

4、支持多參數傳遞

例子:

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

注意調用方法是setParameterList。

5、調用數據庫裡面的函數

例子:

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

數據庫函數date_format。

6、直接支持sql查詢

例子:

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

只需要調用session裡面的createSQLQuery方法即可。

7、進行導航查詢

例子:

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

這種查詢很方便。

8、分頁查詢

例子:

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

這是很簡單的分頁查詢,分頁查詢實現比這個復雜多了,分頁查詢采用的相當於數據庫裡面的 limit ,來限制一次查詢顯示的條數。

注:還有一些其他就不一一列舉了,Hibernate查詢在Hibernate的使用中HQL查詢語言如果用得好,會給工作帶來比較高的效率,比較重要,而且還有一個查詢效率的問題,這涉及到緩存等方面,以後會更新這方面的文章。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved