簡(jiǎn)介:這是Hibernate3.2.6 原生sql 查詢使用方法,將查詢結(jié)果直接轉(zhuǎn)換為VO,不必非要指定屬性大寫(xiě)的詳細(xì)頁(yè)面,介紹了和數(shù)據(jù)庫(kù),有關(guān)的知識(shí),加入收藏請(qǐng)按鍵盤(pán)ctrl+D,謝謝大家的觀看!要查看更多有關(guān)信息, 請(qǐng)點(diǎn)擊此處
1.由于SQL語(yǔ)法本身的復(fù)雜,及各種數(shù)據(jù)庫(kù)原生功能的多樣性,HQL和QBC不能涵蓋所有的查詢特性,這時(shí)就需要采用原生的SQL達(dá)到期望的目的。Hibernate 完全支持直接使用數(shù)據(jù)庫(kù)SQL語(yǔ)言進(jìn)行查詢,并將查詢結(jié)果進(jìn)行了簡(jiǎn)單的封裝。不必再對(duì)ResultSet進(jìn)行煩瑣的操作,因?yàn)椴樵兘Y(jié)果依然是由持久化對(duì)象的集合。仍然可以用面向?qū)ο蟮乃枷脒M(jìn)行編程。
2.Hibernate 為執(zhí)行本地查詢提供了專門(mén)的方法,及Session的createSQLQuery(String sql),參數(shù)就是要執(zhí)行的sql 語(yǔ)句,返回類型為Query 類型的實(shí)例.
3.以下是通過(guò)關(guān)聯(lián)查詢,將查詢結(jié)果直接映射到非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 查詢使用方法,將查詢結(jié)果直接轉(zhuǎn)換為VO,不必非要指定屬性大寫(xiě)"?有關(guān)的 java 編程小帖士: strong>Registry.USERS代表HKEY_USERS根鍵。 語(yǔ)法 public static final RegistryKey USERS; 說(shuō)明 USERS根鍵用于保存系統(tǒng)中所有用戶的信息。要保存計(jì)算機(jī)當(dāng)前用戶的信息,使用CURRENT_USER鍵。
RegistryKey類 提供允許你讀寫(xiě)系統(tǒng)注冊(cè)表的方法。 package com.ms.wfc.app public final class RegistryKey 說(shuō)明 使用RegistryKey類創(chuàng)建和刪除子鍵并給注冊(cè)表?xiàng)l目指定信息。你可以使用注冊(cè)表保存信息,比如應(yīng)用程序的設(shè)置、最近打開(kāi)過(guò)的文件路徑以及版信息。要獲得RegistryKey的實(shí)例,使用靜態(tài)方法getBaseKey,或使用Registry類的一個(gè)成員。你不能使用new關(guān)鍵字創(chuàng)建RegistryKey類的實(shí)例。 方法 RegistryKey.close 關(guān)閉當(dāng)前的鍵,而且,如果修改了內(nèi)容,也將鍵值保存到注冊(cè)表中。 語(yǔ)法 public void close() public void close( boolean flushCache ) 參數(shù) flushCache 如果設(shè)置為true,則當(dāng)修改了鍵值時(shí)就將鍵值保存到磁盤(pán)上。 說(shuō)明 close方法將關(guān)閉當(dāng)前正被引用的注冊(cè)表鍵。如果你使用第二種方法并將方法的參數(shù)設(shè)置為true,則緩沖區(qū)中任何的注冊(cè)表鍵值信息都將保存到注冊(cè)表中。使用該方法關(guān)閉分配給RegistryKey對(duì)象的注冊(cè)表鍵值,這樣就可以給該對(duì)象分配不同的注冊(cè)表鍵值。調(diào)用第一種close方法與調(diào)用第二種方法并將參數(shù)設(shè)置為true是一樣的。 RegistryKey.createSubKey 創(chuàng)建新的子鍵。 語(yǔ)法 public RegistryKey createSubKey ( String subkey ) 參數(shù) subkey String對(duì)象,代表要?jiǎng)?chuàng)建的子鍵名字或路徑。 返回值 返回子鍵,如果操作失敗,就返回null。 說(shuō)明 createSubKey方法通常創(chuàng)建RegistryKey對(duì)象的子鍵并給其分配一個(gè)新的RegistryKey對(duì)象。 如果你創(chuàng)建的子鍵已經(jīng)存在,就打開(kāi)該鍵并將初始化所用的RegistryKey對(duì)象分配給它。要?jiǎng)?chuàng)建子鍵樹(shù),在定義新的子鍵時(shí)加上反斜線(\)。記住,在Java語(yǔ)言中,引號(hào)中的字符串要使用雙反斜線。你可以使用createSubKey方法在某個(gè)注冊(cè)表根鍵下創(chuàng)建一個(gè)位置來(lái)保存你的應(yīng)用程序信息。 下面的例子演示了如何創(chuàng)建一個(gè)新子鍵的RegistryKey對(duì)象。它使用Registry類成員來(lái)訪問(wèn)CURRENT_USER根鍵。 RegistryKey myKey = |
?? Query queryObject = getSession().createSQLQuery(queryString)
?
? ??????????????????? .addScalar("typeId")//明確指定bean屬性名返回值:名稱,類型,不限制必須大寫(xiě)
? ? ????????????????? .addScalar("typeName",Hibernate.STRING)
????????????????????? .addScalar("listName")//對(duì)全部或者部分的標(biāo)量值不設(shè)置數(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;
?}
?
}
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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