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

Hibernate的核心接口 --- Query查詢詳解

一 概念介紹

1.Query是Hibernate的查詢接口,用於從數據存儲源查詢對象及控制執行查詢的過程,Query包裝了一個HQL查詢語句。

2.HQL是Hibernate Query Language的簡寫,HQL采用面向對象的查詢方式,HQL查詢提供了更加豐富和靈活的查詢特征,因此Hibernate將HQL查詢方式立為官方推薦的標准查詢方式,HQL查詢在涵蓋Criteria查詢的所有功能的前提下,提供了類似標准SQL語句的查詢方式,同時也提供了更加面向對象的封裝

二 方法使用

    Criteria的創建方式:

    Criteria crit = session.createCriteria(DomainClass.class);

    簡單屬性條件如:

criteria.add(Restrictions.eq(propertyName, value)),

    criteria.add(Restrictions.eqProperty(propertyName,otherPropertyNa  me))

    //分頁的查詢

    query.setFirstResult(0);//從第0行開始

    query.setMaxResults(4);//最多顯示幾行記錄

query.setString("n", name);//為占位符賦值

三 代碼應用

    public static void query(String name) {

       Session session = null;

       try {

           session = HibernateUtil.getSession();

//定義hql語句,目的是:通過name查詢所有

           String queryString = "from User as user where user.name=:n";     

          Query query = session.createQuery(queryString);

           query.setString("n", name);

           //查詢出所有的name相同的

           List<User> list = query.list();// 得到所有的結果集

           for (User u : list) {

              System.out.println(u.toString());

           }

       } finally {

           if (session != null) {

              session.close();

           }

       }

    }

注:

1.在定義Hql時,如果定義的語句為

String queryString = "from User as user where user.name=?";

在位占位符賦值的時候是:

query.setString(0, name);

這樣會出現的問題是:如果為多個占位符賦值,可能會出錯,所以用上面的方法比較保險,可讀性好。

2.Hql語句中的分析:

(1)查詢的是所有的User所對應的記錄   

(2)user是別名    

(3)name是類中的屬性名   

(4)name=:n是給?起的名字,為了防止賦值的時候亂

3.最重要的HQL的語句為

    String queryString = "from User as user where user.name=:n";       Query query = session.createQuery(queryString);

    query.setString("n", name);

Copyright © Linux教程網 All Rights Reserved