簡介:這是Hibernate3.2.6 原生sql 查詢使用方法,將查詢結果直接轉換為VO,不必非要指定屬性大寫的詳細頁面,介紹了和數(shù)據(jù)庫,有關的知識,加入收藏請按鍵盤ctrl+D,謝謝大家的觀看!要查看更多有關信息, 請點擊此處
1.由于SQL語法本身的復雜,及各種數(shù)據(jù)庫原生功能的多樣性,HQL和QBC不能涵蓋所有的查詢特性,這時就需要采用原生的SQL達到期望的目的。Hibernate 完全支持直接使用數(shù)據(jù)庫SQL語言進行查詢,并將查詢結果進行了簡單的封裝。不必再對ResultSet進行煩瑣的操作,因為查詢結果依然是由持久化對象的集合。仍然可以用面向對象的思想進行編程。
2.Hibernate 為執(zhí)行本地查詢提供了專門的方法,及Session的createSQLQuery(String sql),參數(shù)就是要執(zhí)行的sql 語句,返回類型為Query 類型的實例.
3.以下是通過關聯(lián)查詢,將查詢結果直接映射到非Hibernate管理的bean類PropListVO.class上方便取用。
//以下示例代碼
public List queryByNativeSQL(String typeId){
try {
????? String queryString = "select a.type_Id typeId,a.type_Name typeName,b.list_Name listName,b.list_Id listId from Prop_Type as a,Prop_List as b where a.type_Id = b.type_Id and ?a.type_Id " + "= ?";
和?"Hibernate3.2.6 原生sql 查詢使用方法,將查詢結果直接轉換為VO,不必非要指定屬性大寫"?有關的 java 編程小帖士: strong>Registry.USERS代表HKEY_USERS根鍵。 語法 public static final RegistryKey USERS; 說明 USERS根鍵用于保存系統(tǒng)中所有用戶的信息。要保存計算機當前用戶的信息,使用CURRENT_USER鍵。
RegistryKey類 提供允許你讀寫系統(tǒng)注冊表的方法。 package com.ms.wfc.app public final class RegistryKey 說明 使用RegistryKey類創(chuàng)建和刪除子鍵并給注冊表條目指定信息。你可以使用注冊表保存信息,比如應用程序的設置、最近打開過的文件路徑以及版信息。要獲得RegistryKey的實例,使用靜態(tài)方法getBaseKey,或使用Registry類的一個成員。你不能使用new關鍵字創(chuàng)建RegistryKey類的實例。 方法 RegistryKey.close 關閉當前的鍵,而且,如果修改了內(nèi)容,也將鍵值保存到注冊表中。 語法 public void close() public void close( boolean flushCache ) 參數(shù) flushCache 如果設置為true,則當修改了鍵值時就將鍵值保存到磁盤上。 說明 close方法將關閉當前正被引用的注冊表鍵。如果你使用第二種方法并將方法的參數(shù)設置為true,則緩沖區(qū)中任何的注冊表鍵值信息都將保存到注冊表中。使用該方法關閉分配給RegistryKey對象的注冊表鍵值,這樣就可以給該對象分配不同的注冊表鍵值。調(diào)用第一種close方法與調(diào)用第二種方法并將參數(shù)設置為true是一樣的。 RegistryKey.createSubKey 創(chuàng)建新的子鍵。 語法 public RegistryKey createSubKey ( String subkey ) 參數(shù) subkey String對象,代表要創(chuàng)建的子鍵名字或路徑。 返回值 返回子鍵,如果操作失敗,就返回null。 說明 createSubKey方法通常創(chuàng)建RegistryKey對象的子鍵并給其分配一個新的RegistryKey對象。 如果你創(chuàng)建的子鍵已經(jīng)存在,就打開該鍵并將初始化所用的RegistryKey對象分配給它。要創(chuàng)建子鍵樹,在定義新的子鍵時加上反斜線(\)。記住,在Java語言中,引號中的字符串要使用雙反斜線。你可以使用createSubKey方法在某個注冊表根鍵下創(chuàng)建一個位置來保存你的應用程序信息。 下面的例子演示了如何創(chuàng)建一個新子鍵的RegistryKey對象。它使用Registry類成員來訪問CURRENT_USER根鍵。 RegistryKey myKey = |
?? Query queryObject = getSession().createSQLQuery(queryString)
?
? ??????????????????? .addScalar("typeId")//明確指定bean屬性名返回值:名稱,類型,不限制必須大寫
? ? ????????????????? .addScalar("typeName",Hibernate.STRING)
????????????????????? .addScalar("listName")//對全部或者部分的標量值不設置數(shù)據(jù)類型信息也是可以的
? ??????????????????? .addScalar("listId")
????????????????????? .setResultTransformer(Transformers.aliasToBean(PropListVO.class));
????????????????? queryObject.setParameter(0, typeId);
?????????????? return queryObject.list();
} catch (RuntimeException re) {
?????? log.error("find by property name failed", re);
?????? throw re;
}finally{
???????? HibernateSessionFactory.closeSession();
}
}
?//以下是bean 類
public class PropListVO {
?private String typeId;
?private String typeName;
?private String listName;
?private String listId;
?/**
? * @return the typeId
? */
?public String getTypeId() {
??return typeId;
?}
?/**
? * @param typeId the typeId to set
? */
?public void setTypeId(String typeId) {
??this.typeId = typeId;
?}
?/**
? * @return the typeName
? */
?public String getTypeName() {
??return typeName;
?}
?/**
? * @param typeName the typeName to set
? */
?public void setTypeName(String typeName) {
??this.typeName = typeName;
?}
?/**
? * @return the listName
? */
?public String getListName() {
??return listName;
?}
?/**
? * @param listName the listName to set
? */
?public void setListName(String listName) {
??this.listName = listName;
?}
?/**
? * @return the listId
? */
?public String getListId() {
??return listId;
?}
?/**
? * @param listId the listId to set
? */
?public void setListId(String listId) {
??this.listId = listId;
?}
?
}
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
