1. 程式人生 > >1.27 【雜記】hibernate的各種查詢方法

1.27 【雜記】hibernate的各種查詢方法

1.     使用HQL語句

Query q = session.createQuery("select e from com.sun.demo.Emp e");

2.     使用Load方法(主鍵查詢)

Emp e = (Emp)session.load(Emp.class, 1141);

3.     使用get方法(主鍵查詢)

Emp e = (Emp)session.get(Emp.class, 1141);

4.     引數化查詢(使用?萬用字元,或者命令萬用字元)

Query q = session.createQuery("update Userinfo set ename='AAA' WHERE ename=?");

       q.setParameter(0, "SMITH");

Query q = session.createQuery("update Userinfo set ename='AAA' WHERE ename like ?");

       q.setParameter(0, "%M%");

Query q = session.createQuery("update Userinfo set ename='AAA' WHERE ename like :lkename");

       q.setParameter("lkename", "%L%");

5.     命名查詢

<

query name="myquery">

<![CDATA[

     from com.sun.hibernate.Employer where job = ?

]]>

</query>

Query q = session.getNamedQuery("myquery");

q.setParameter(0, "MANAGER");

6.     屬性查詢

Query q = session.createQuery("select max(sal) from Employer e where sal is not null");

Query q = session.createQuery(

"select distinct job from Employer e");

7.     例項化查詢

步驟如下:

1.編寫你的HQL語句

2.建立普通的Java類 -------------------與POJO類不同,它與資料庫沒有任何關係

3.在該java類中你需要建立和查詢結果對應的欄位

4.在該java類中,你需要建立合適的建構函式

5.完善你的HQL語句,使用例項化查詢的方式進行包裝

6.通過list.get(i)獲取的結果就不再是一個數組,而是一個包裝後的物件

例子:

Query q = session.createQuery("SELECT new com.sun.demo.UserDate(ename,SYSDATE) FROM Userinfo");

List list = q.list();

for(int i=0;i<list.size();i++){

       UserDate u = (UserDate)list.get(i);

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

}

8.     多型查詢

對於pojo來說,java中的這種關係被擴充套件到了資料庫表中

hibernate在查詢一個表的同時,會檢查該表所對應的POJO類有沒有子類,如果有,一起查詢出來

9.     分頁查詢

//查詢第三到五條

              q.setFirstResult(3);//從第三條開始

              q.setMaxResults(3);//提取三條

10.  uniqueResult方法查詢(查詢結果只能是一個欄位)

Query q = session.createQuery("select count(*) from Employer");

Long count = (Long)q.uniqueResult();

11.  Criteria查詢(通過面向物件化的設計,將資料查詢條件封裝為一個物件)

Criteria c = session.createCriteria(Employer.class);

       c.addOrder(Order.asc("sal"));      //按薪水升序查詢

       c.setFirstResult(3);

       c.setMaxResults(3);

       List list = c.list();

for(int i=0;i<list.size();i++){

           Employer emp = (Employer)list.get(i);

           System.out.println(emp.getEname() + " : " + emp.getSal());

       }

相關推薦

1.27 雜記hibernate各種查詢方法

1.     使用HQL語句 Query q = session.createQuery("select e from com.sun.demo.Emp e"); 2.     使用Load方法(主鍵查詢) Emp e = (Emp)session.load(Emp.cl

SSHHibernate中DetachedCriteria設定關聯屬性的查詢條件和獲取關聯屬性結果集的倆個問題!

問題一:Hibernate設定關聯屬性的查詢條件如果我們想要在離線DetachedCriteria中設定物件的關聯屬性物件的非外來鍵屬性的查詢條件,那麼要為關聯屬性設定一個別名!!注意:如果查詢的就是關

MySQL慢查詢 - 開啟慢查詢

long 復制代碼 pan 重啟 技術分享 開啟 select name 變量 一、簡介 開啟慢查詢日誌,可以讓MySQL記錄下查詢超過指定時間的語句,通過定位分析性能的瓶頸,才能更好的優化數據庫系統的性能。 二、參數說明 slow_query_log

SQL模糊查詢

使用 模式 正則表達 bcd 一個 長度 排除 lsp [] 在進行數據庫查詢時,有完整查詢和模糊查詢之分。一般模糊查詢語句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 條件 其中關於條件,SQL提供了四種匹

SQLAlchemySQLAlchemy修改查詢字段列名

googl from ng- 需要 修改 == logs span str SQLAlchemy問題記錄 company price quantity Microsoft 100 10 Google 99 5 Google

2017秋-軟件工程第五次作業(1)-探路者團隊選題展示

www tar ont 地址 lin 文案 相關 air .html 【探路者】團隊項目名稱:貪吃蛇 2017秋-軟件工程第五次作業(1)-【探路者】團隊選題展示(視頻)鏈接: http://www.iqiyi.com/w_19rvb5njph.html 2017秋-軟件

2017秋-軟件工程第七次作業(1)-探路者貪吃蛇阿爾法發布

lai targe html 地址 lan www lin .html href 【探路者】團隊項目阿爾法發布:貪吃蛇 2017秋-軟件工程第七次作業(1)-【探路者】貪吃蛇 阿爾法發布展示(視頻)鏈接: http://www.iqiyi.com/w_19ruzx6xu

2017秋-軟件工程第七次作業(1)-探路者貪吃蛇阿爾法發布展示(視頻展示)

軟件工程 lin 使用 .html -1 target 背景音樂 targe 核心 Part One 【探路者】選題展示視頻鏈接: http://www.iqiyi.com/w_19ruzx6xud.html Part Two 【貪吃蛇】阿爾法發布視頻截圖 1視頻的前半部

Django模糊查詢

mod post bject sea django .get == 豎線 contain def search(request): searchtype = request.POST.get("searchtype") keyword = requ

雜記C#中的回車換行符

語言 color 雜記 pan blog == 一行 div 屬性 在 C# 中,我們用字符串 "\r\n" 表示回車換行符。 如: string str = "第一行\r\n第二行"; 但是我們更推薦 Environment.NewLine(名稱空間為 System)

UML各種線的含義

應對 隨著 不同 繼承關系 https 時序 struct 時序圖 ise 原文地址:http://blog.csdn.net/jianfpeng241241/article/details/49617449 內容目錄: 從一個示例開始 類之間的關系 時序圖 附錄:

題解CQOI2015任務查詢系統

nod node bool ger -- oid 上進 while div   主席樹,操作上面基本上是一樣的。每一個時間節點一棵樹,一個樹上的每個節點代表一個優先級的節點。把開始和結束時間點離散,在每一棵樹上進行修改。註意因為一個時間節點可能會有多個修改,但我們要保證都在

CCF權限查詢

個數 hda ron style algo 接下來 系統用戶 ans space 問題描述   授權 (authorization) 是各類業務系統不可缺少的組成部分,系統用戶通過授權機制獲得系統中各個模塊的操作權限。  本題中的授權機制是這樣設計的:每位用戶具有若幹角色,

hibernate打印SQL及參數

orm comment binder version engine .org inf 相關 bin 在Hibernate的配置文件hibernate.cfg.xml中有3個設置項跟顯示SQL語句相關,他們的值都是boolean值:1、show_sql:是否顯示SQL語句2、

原創Hibernate自動生成(2)

成了 OS class 項目重構 alt index AS url 改名 本實戰是博主初次學習Java,分析WCP源碼時,學習HibernateTools部分的實戰,由於初次接觸,難免錯誤,僅供參考,希望批評指正。 開發環境: Eclipse Version: Photo

OJ2130K小數查詢

很好 print char line 分塊 con 多少 第一個 () 2130 -- K小數查詢(Solution) 題目大意 : 給你一個長度為 \(N\) 的數列和 \(Q\) 個操作,操作包括:①區間加一個數;②詢問區間內第 \(k\) 小的數。\((n,q\le8

MySQLMysql模糊查詢like提速優化

app 有一個 使用 set table 存在 src instr 分享圖片 在使用msyql進行模糊查詢的時候,很自然的會用到like語句,通常情況下,在數據量小的時候,不容易看出查詢的效率,但在數據量達到百萬級,千萬級的時候,查詢的效率就很容易顯現出來。這個時候查詢的效

筆記Mybatis高階查詢(八)--列舉處理器的使用

在sys_role中有一個欄位enabled,只有2個可選值,0-禁用,1-啟用。在SysRole中使用了Integer enabled來定義,這種情況下必須手動校驗enabled的值是否符合要求,在只有2個值的時候處理比較容易,但當值很多的時候,處理就比較麻煩。這時候就要使用Myb

筆記Mybatis高階查詢(七)--儲存過程呼叫

以下例子展示Mybatis儲存過程呼叫,與普通查詢基本一樣,只是在配置對映時要加上statementType=“CALLABLE”,由於儲存過程方式不支援Mybatis的二級快取,所以要加上useCache=“false”。 在儲存過程中使用引數時,除了配置屬性名外,還需要指定

筆記Mybatis高階查詢(六)--鑑別器discrimiator的使用

<discrimiator>鑑別器標籤用來處理不同資料型別執行不同操作的。與java的switch語句相似。有以下屬性: column:該屬性用於設定要進行鑑別比較值的列。 javaType:該屬性用於指定列的資料型別,保證使用相同的java