Hibernate中的核心介面query介面用法

來源:互聯網
上載者:User

Hibernate中的核心介面query介面用法

Query是Hibernate的查詢介面,用於從資料存放區源查詢對象及控制執行查詢的過程,Query封裝了一個HQL查詢語句。

Query介面的用法:

通過SessionFactory獲得了session對象後,除了可以通過get(類名.class, id)方法得到相應的對象,還可以通過獲得Query對象來取得需要的對象

 

Query query = session.createQuery(查詢語句如from UserBean);

Query對象在Session對象關閉之前有效,否則會拋出SessionException異常。因為Session對象就想JDBC中的Connection 對象,即資料庫的一次串連。關閉Connection對象,Statement對象就不能再使用,所以關閉Session後就不能再使用Query對象了。

 

Query介面的方法:

Query介面的常用方法:

1,setxxx():用於設定HQL語句中問號或者變數的值;

設定HQL語句中問號或者變數的值有兩種使用方式:

A,setString(int position,String value);設定HQL中的“?”的值,其中position代表“?”在HQL中的位置,value是要為“?”設定的值

例:

 

Query query=session.createQuery(from UserInfoPO u where u.age>? and u.useName like ?);  query.setInteger(0, 22);     //使用?,第一個下標是從0開始的,給第一個問號賦值22  query.setString(1, %志%);   //設定第二個問號的值為“%志%”

 

 

B,setString(String paraName,String value);設定HQL中“:”後所跟變數的值;其中paraName代表HQL中“:”後邊的變數名,value是該變數的值:

例:

 

 Query query=session.createQuery(from UserInfoPO u where u.age>:minAge and u.useName like:useName);    query.setInteger(minAge, 22);       //設定minAge的值    query.setString(userName, %志%);   //設定useName的值

 

2,list();返回查詢結果,並把查詢結果轉換成list對象;

也可以用query.uniqueResult();//得到一個單個的對象

 

 Query query=session.createQuery(from UserInfoPO u where u.age>:minAge and u.useName like:useName);            query.setInteger(minAge, 22);       //設定minAge的值            query.setString(userName, %志%);   //設定useName的值            List list=query.list();                       for(int i=0;i

 

3,executeUpdate();執行更新和刪除語句

 

 Query query=session.createQuery(delete from UserInfoPO);  query.executeUpdate();  //刪除資料

分頁查詢:
query.setFirstResult(位置如0);//表示從哪個位置開始查詢,返回query對象
query.setMaxResult(記錄條數);//表示當頁共幾條記錄,返回一個集合
session.createQuery(select count(*) from 類名).uniqueResult();//得到記錄總數

 

 

介紹一些有關Query的查詢語句

使用HQL刪除資料:

 

   String hql = delete user where age>18;    Query query = session.createQuery(hql);    int ref = query.executeUpdate();  
更新資料 :

 

 

   Transaction tx= session.beginTransaction();    Query query = session.createQuery(update User set name='momor' where name='bbb');    query.executeUpdate();    tx.commit();    session.close(); 
也可以在where子句上進行運算式,and、or:
Query query = session.createQuery(from User user where (user.age / 10 = 3)); 
Query query = session.createQuery(from User user where (user.age > 20) and (user.name = 'caterpillar')); 
is not nullL與is null則可以測試欄位值是否為空白值:

 

 

Query query = session.createQuery(from User user where user.name is not null); 
between可以測試欄位值是否在指定的範圍之內:

 

Query query = session.createQuery(from User user where user.age between 20 and 30);

可以使用in或not in來測試欄位值是否在您指定的集合中:

 

Query query = session.createQuery(from User user where user.name in('caterpillar', 'momor'));
like或not like可以讓您進行模糊條件搜尋,例如想搜尋名稱中含有cater開頭的資料:

 

 

Query query = session.createQuery(from User user where user.name like 'cater%'); 
對查詢結果使用order by進行排序,可使用desc反排序:

 

 

Query query = session.createQuery(from User user order by user.age); 
Query query = session.createQuery(from User user order by user.age desc, user.name); 

代碼應用:

 

 

 public static void query(String name) {       Session session = null;       try {           session = HibernateSessionFactory.getSession();          //定義hql語句,目的是:通過name查詢所有           String queryString = from User as user where user.name=:n;                Query query = session.createQuery(queryString);           query.setString(n, name);          //查詢出所有的name相同的           List list = query.list();// 得到所有的結果集           for (User u : list) {              System.out.println(u.toString());           }       } finally {           if (session != null) {              session.close();           }       }    }


 





 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.