hibernate查詢語言
-
什麼是hql HQL是Hibernate Query Language的縮寫
查全部
-
hql和sql區別/異同 HQL SQL 類名/屬性 表名/列名 區分大小寫,關鍵字不區分大小寫 不區分大小寫 別名 別名 ?,從下標0開始計算位置(hibernate5之後不支援) ?,從順序1開始計算位置 :命名引數 不支援:命名引數 面向物件的查詢語言 面向結構查詢語言
注1:QuerySyntaxException:book is not mapped
-
處理返回的結果集 3.1 單個物件 select沒有逗號 3.2 Object[] b.bookId, b.bookName 3.3 Map new Map(b.bookId as bid, b.bookName as bname) 3.4 new 構造方法(attr1,attr2) new Book(b.bookId, b.price)
-
hql中使用佔位符 4.1 ?佔位符 從下標0開始計算位置 hibernate5之後不再支援?佔位符
4.2 :命名引數
-
連線查詢
-
聚合函式 sum avg max min count
-
hql分頁 int page = 2;// 頁碼:page int row = 10;// 每頁行數:rows query.setFirstResult((page - 1) * row);// 設定起始記錄下標 query.setMaxResults(row);// 設定返回的最大結果集
程式碼測試示例
package com.seven.text; import java.util.Arrays; import java.util.List; import java.util.Map; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.Query; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.five.entity.Book; import com.two.util.SessionFactoryUtil; /** * @author zr176 * */ public class HqlTest { private Session session; private Transaction beginTransaction; @Before public void before() { session=SessionFactoryUtil.getSession(); beginTransaction = session.beginTransaction(); } @After public void after() { beginTransaction.commit(); SessionFactoryUtil.closeSession(); } /* * 結果處理情況1: * 直接通過物件進行資料接收 * */ @Test public void test1() { String hql ="from Book"; Query createQuery = session.createQuery(hql); List<Book> list = createQuery.list(); for (Book b : list) { System.out.println(b); } } /* * 結果處理情況2: * 查一列 * 查的是實體類的某一屬性,嚴格區分大小寫 * */ @Test public void test2() { String hql ="select bookName from Book"; List<String> list = session.createQuery(hql).list(); for (String string : list) { System.out.println(string); } } /* * 結果處理情況3: * 查兩個欄位 * 用Object陣列接收 * */ @Test public void test3() { String hql ="select bookId,bookName from Book"; List<Object[]> list = session.createQuery(hql).list(); for (Object[] o: list) { System.out.println(Arrays.toString(o)); } } /* * 結果處理情況4:利用hibernate內建函式進行處理 * 查兩個欄位 * map接收 * */ @Test public void test4() { String hql ="select new map(bookId,bookName) from Book"; List<Map> list = session.createQuery(hql).list(); for (Map o: list) { System.out.println(o); } } /* * 結果處理情況5:利用構造方法賦值 * */ @Test public void test5() { String hql ="select new Book(bookId,bookName) from Book"; List<Book> list = session.createQuery(hql).list(); for (Book o: list) { System.out.println(o); } } }