hibernate4使用本地sql查詢和刪除

2021-09-19 19:29:50 字數 2983 閱讀 1986

public listlistall(mapmap, int pn, int pagesize)  

throws exception

if (!global.isempty(map.get("mmssubject")))

if (!global.isempty(map.get("startmmsdate")))

if (!global.isempty(map.get("endmmsdate")))

if (!global.isempty(map.get("mmsorigno")))

if (!global.isempty(map.get("mmsreceno")))

if (!global.isempty(map.get("mmsstatus")))

// 獲取本地sql語句物件

sqlquery query = getsession().createsqlquery(sb.tostring());

// 設定將sql表的別名和實體類聯絡起來

query.addentity(mmstable.class);

// 分頁**

if (pn > -1 && pagesize > -1)

} // 執行查詢方法,返回結果

listmmslist = query.list();

// 返回執行結果

return mmslist;

} /**

* */

@override

public int countall(mapmap)

throws exception

if (!global.isempty(map.get("mmssubject")))

if (!global.isempty(map.get("startmmsdate")))

if (!global.isempty(map.get("endmmsdate")))

if (!global.isempty(map.get("mmsorigno")))

if (!global.isempty(map.get("mmsreceno")))

if (!global.isempty(map.get("mmsstatus")))

// 獲取本地sql語句物件

sqlquery query = getsession().createsqlquery(sb.tostring());

// 執行查詢方法,返回結果

integer count = integer.valueof(query.uniqueresult().tostring());

return count;

}

hibernate

對本地查詢提供了內建支援,為了把

sql查詢返回的關係資料對映為物件,需要在

sql查詢語句中為字段制定別名。如下面**所示:

string sql=」select cs.id as

,cs.name as

,cs.age as

from customer cs where cs.id=』1』 」;

query query=session.createsqlquery(sql,」c」,customer.class);

以上的程式**將

customer

實體物件的別名設定為c,將

customer

表的別名設定為

cs,欄位的別名必須位於大括號之內。

本地sql

查詢還可以支援連線查詢,如下面的程式**:

string sql=」select , from customer c inner join order o where c.id=o.customer_id」;

query query=session.createsqlquery(sql,

new string,

new class);

list list=query.list();

for(int i=0;i

object objs=(object)list.get(i);

customer customer=(customer)objs[0];

order order=(order)objs[1];

}

值得注意的是以上程式**中

query

的list()

方法返回的結果集中存放的是物件陣列,在物件陣列中成對存放著一對

customer

物件和order

物件。

刪除操作

public void deletemmstable(string msgid)  

throws exception

; // 拼裝sql語句

string sql = "delete from mmstable where msgid = ?";

// 執行sql語句

sqlquery query = getsession().createsqlquery(sql);

setparameters(query, paramlist);

query.executeupdate();

}

hibernate4使用原生jdbc進行批處理

在hibernate中,有一級快取session和二級快取sessionfactory這些機制,一方面為編碼提供了便利,同時也會有一些 比如有較大的資料量互動的話,快取反而會降低效率。最近在做乙個有關批量更新的程式,在呼叫session.update 之後,物件會儲存在快取中,如果資料量超過快取的容...

HIBERNATE4原始碼編譯

git gradlew.bat assemble 可跳過測試,否則執行gradlew.bat build的過程中,遇到test出錯會報錯退出 本以為會順利結束,沒想到又報錯了。是符號無法識別轉換的錯誤。在網上搜尋了一番,這個跟系統的區域設定有關。需要改為 英語 英國 我試了英語 美國 居然還是報錯。...

osgi 環境下 hibernate 4 配置

準備將公司的老應用遷移到osgi karaf平台上。很 的一點就是hibernate。這玩意,真是超級麻煩的乙個工程。classload是最頭痛的乙個問題。在hibernate4上利用註冊服務的方式 實現了 classloader的 順便提一句想用hibernate3做reloadclass的同學們...