1. 程式人生 > >Hibernate HQL查詢 查詢某幾列

Hibernate HQL查詢 查詢某幾列

  Hibernate使用Query物件進行查詢。Session的createQuery()方法能夠建立Query例項,引數為HQL。Query物件能夠返回各種型別的查詢結果,

例如long、String、List<實體類>、List、POJO等。最常用的查詢方法有uniqueResult()與list()等。其中uniqueResult()返回單個值,而

list()返回零個或者多個值。

1.直接從實體物件進行查詢,即只能查詢該物件的所有列

 @SuppressWarnings("unchecked")  
public static void test1(){  
    Session session = HibernateSessionFactory.currentSession();  
    String hql = "from User u";  
    Query query = session.createQuery(hql);  
    List<User> user = query.list();  
    System.out.println("------------SQL執行完畢---------------");  
    for (User us : user) {  
        System.out.println(us.getName());  
    }  
} 

1.2在HQL中,不能使用select * from Student,但是可以使用別名 select stu from Student stu

public void test12() {  
    Session session = HibernateUtils.openSession();  
    Query query = session.createQuery("select stu from Student stu");  
    List<Student> stus = query.list();  
    for (Student stu : stus) {  
        System.out
.println(stu); } }

1.3查詢一個表的記錄數(當查詢結果唯一時,可以使用uniqueResult())

public void test13(){
    String hql="select count(*) from Student";
    Session session=HibernateUtils.openSession();
    Long countRecord=(Long) session.createQuery(hql).uniqueResult();
    int count=countRecord.intValue();
    System.out
.println(count); }

2.如果想單獨查詢某一列,可以這樣使用

@SuppressWarnings("unchecked")  
public static void test2(){  
    Session session = HibernateSessionFactory.currentSession();  
    String hql = "select name from User u";  
    Query query = session.createQuery(hql);  
    List<String> user = query.list();  
    System.out.println("------------SQL執行完畢---------------");  
    for (String us : user) {  
        System.out.println(us);  
    }  
}  

3.如果想查詢某幾列的話,注意返回的內容不同,幾列就是幾個物件,這幾個物件放在一個物件陣列中

/** 
 * 查詢某幾列 
 */  
@SuppressWarnings("unchecked")  
public static void test3(){  
    Session session = HibernateSessionFactory.currentSession();  
    String hql = "select id,name from User u";  
    Query query = session.createQuery(hql);  
    List user = query.list();  
    System.out.println("------------SQL執行完畢---------------");  
    for(Object obj : user){  
        Object[] arrObj = (Object[])obj;  
        System.out.println(arrObj[0] + "\t-->\t" + arrObj[1]);  
    }  
} 

關於查詢某幾列的詳細說明:

 Query的list()方法返回java.util.List物件。List中一般儲存完整的實體類物件。例如select  name from User u 會將所有的User屬性都查詢出來,

即包含User類的所有及時載入的屬性(注意:此時懶載入的屬性並不會載入)。

對於有些查詢,我們只需要查詢幾個屬性就夠了,而不需要查詢所有的實體類屬性。這時候可以在HQL中指定要返回的部分。查詢部分屬性時,

返回結果仍然是List型別,裡面可能是單個的Object,也可能是Object[]陣列,還可能是List物件與Map物件,返回什麼型別資料,由HQL語句決定。

這裡寫圖片描述

這裡寫圖片描述

相關推薦

Hibernate HQL查詢 查詢

Hibernate使用Query物件進行查詢。Session的createQuery()方法能夠建立Query例項,引數為HQL。Query物件能夠返回各種型別的查詢結果, 例如long、String、List<實體類>、List、POJO等

Hibernate查詢 HQL查詢查詢

  在學習程式設計的過程中,我覺得不止要獲得課本的知識,更多的是通過學習技術知識提高解決問題的能力,這樣我們才能走在最前方,更多Java專業知識,廣州瘋狂java培訓為你講解;   HQL 是HibernateQuery Language的簡寫,即 hibernate 查詢

Hibernate hql 中文查詢 查不出結果

hql沒問題了,但就是差不出結果,還不報錯…… 是中文編碼問題。 最簡單方法: 連線sql語句改為: jdbc:mysql://localhost:3306/XXX?useUnicode=true&amp;characterEncoding=UTF-8

sqlserver trigger(觸發器)-更新數據時觸發【轉】

gin begin -i transfer 數據 如果 upd from lar CREATE TRIGGER [dbo].[updataAlarmLevel]ON [dbo].[Alarm_Alarm_Info]AFTER INSERT, UPDATE – 在

怎麼把一張表中資料插入到另一張表中mysql

兩種方法: 1.表之間的關聯; 2.java程式; 我們這裡主要講的是第二種方法: 第二種方法的優勢在於,如果想要把a表中的資料某幾列資料插入b表中,無需b表中的某列=a表中某列,即使b表中什麼資料都沒有; 那就是mysql語句的增刪改查,比任何操作都簡單,都迅

【轉載】ASP.NET 固定GridView的表頭和

原連結: 固定GridView的表頭和某幾列 原文連結有個Demo程式碼,如果有需要的話可以點選原文再下載。 原來系統中有很多超長gridview,需要使用者向右平行拉動才能看到後面的內容。目前開發一

取numpy陣列的

這個操作在numpy陣列上的操作感覺有點麻煩,但是也沒辦法。  例如  a = [[1,2,3],  [4,5,6],  [7,8,9]]  取 a 的 2 3 行, 1 2 列 c=[1,2]  d =[0,1] 若寫為  b = a[c,d]  output:  [4

Python讀取txt繪圖

晚上幫同學用Python指令碼繪圖,大概需求是讀取一個txt檔案的兩列分別作為x和y的值,繪圖即可,程式碼如下: #coding:utf-8 import numpy as np import matplotlib.pyplot as plt import

PB資料視窗將或者重複值合併

也就是PB資料窗怎麼去掉某一列重複值。。。。。。 如顯示結果如下: 想到得到如下顯示結果: 怎麼來做?其實吧,很簡單,只需要開啟資料窗物件,單擊“rows”選單,找到“Suppress Repeating Values...” 單擊彈出如下視窗,

Python取numpy陣列的方法

Python 取numpy陣列的某幾行某幾列方法 直接分析,如原矩陣如下(1): (1) 我們要擷取的矩陣(取其一三行,和三四列資料構成矩陣)為如下(2): (2)

把資料庫表中值相同的行去重,只保留一行

使用分析函式row_number() over (partition by … order by …)來進行分組編號,然後取分組標號值為1的記錄即可。目前主流的資料庫都有支援分析函式,很好用。 其中,partition by 是指定按哪些欄位進行分組,這些欄

spark 按distinct去重、topN、視窗計算的應用

        在spark計算當中,我們日常有些簡單需求,比如去重,比如有四列(appid、date、type、platform),我們只需要對appid,date進行去重,另外兩列不關注。在spark中,distinct會對所有列執行去重操作,兩行比較,只要有個一列有差異

[解決方案]java多維陣列按照進行排序

情景: 有一個二維陣列,我想按照第一,第二,第三列進行降序排列。 注意: 1、如果第一列數值相同,那麼就按照第二列降序排列。 2、同理,如果第二列數值相同,那麼就按照第三列降序排列。 程式碼

查詢數據庫中有沒有重復數據項

pos div stock 查詢 blog sele having count 復數 查詢數據庫中某一列有沒有重復數據項: select * from cd_stock where stock_bh in (select stock_bh from cd_stock gr

Hibernate的條件查詢種方式+查詢所有的記錄

數據庫 rop query 寫法 OS 由於 AC 對象 tst 1、 第一種,用?占位符,如: //登錄(用?占位符) public List<UserPO> LoginUser(UserPO up)throws Exception{ Session

Hibernate hql 查詢 指定欄位 並獲取結果集

1. 查詢整個對映物件所有欄位 Java程式碼        //直接from查詢出來的是一個對映物件,即:查詢整個對映物件所有欄位                

Python:列表中按作為索引查詢其他列表中對應資訊,找到後插入當前列表。

直接複製,修改地址後使用。修改三個位置,如備註。 #coding=utf-8 import os.path import numpy as np if __name__=="__main__":  list_1_txt= open('list1.txt')#這裡,讀取第一個列表 &

查詢資料庫中值重複的資料,查詢並刪除重複的資料

查詢LSCJMB表中F_CJZY對應列值重複的資料: SELECT F_CJZY,COUNT(F_CJZY) FROM LSCJMB GROUP BY F_CJZY HAVING COUNT( F_CJZY )>1 查出了重複的列及重複行數: 刪除全部涉及重複的資料: del

Hibernate 中得查詢hql,離線)和getHibernateTemplate()常用方法彙總

1.hql通過getHibernateTemplate() (1) 回撥介面getHibernateTemplate().execute(new HibernateCallback())方法 public User getEmailByUsername(final String userna

Hibernate HQL查詢語句Query

Department類 @Entity @Table(name="t_department") public class Department extends BaseEntity { String name; @OneToMany(m