Hibernate高級使用:查詢返回自定義對象

      在使用Hibernate的使用中,對報表的數據處理經常需要寫原生的SQL,但使用默認的Hibernate中的List方法只能返回值數組對象,這給以後的修改和維護帶來很多的不便。

 

      其實我們可以通過擴展Hibernate讓結果封裝爲指定的對象結果集,這樣即使用原生SQL,也可能以優雅的方式來處理返回的結果。

 

      Hibernate中有一系列用於組裝返回值對象的工具類,這些類位於Package:org.hibernate.transform中,當Hibernate查詢後會通過這些Transform來重新組裝原始的返回結果,我們只需要自定義一個這樣的Transform,然後在查詢時把這個Transform傳遞給Hibernate的查詢方法,即可把我們指定的方法來重新組裝查詢結果。

 

      爲了實現這個功能,我們需要實現org.hibernate.transform.ResultTransformer這個接口。

 

      接口包括兩個方法:

 

transformTuple方法參數說明:

     1: 值列表。原始SQL查詢後的返回值數組。

     2: 列別名列表。原始SQL查詢結果返回的列名(這個需要注意,Oracle等DB可能不區分大小寫,所以在通過列名反射取得對象類的Set方法前,如果需要按駝峯式的命名法,需要自己制定別名規則)。

 

transformList方法一般直接返回參數List。

 

上面參考代碼中使用field_name作爲別名規則,這樣在返回對象定義時,可以定義屬性爲fieldName,相應的Set方法名爲SetFieldName。

 

** 需要注意的是, 這種方法需要返回的對象類屬性類型定義需要和DB返回的相應字段類型兼容。

 

發佈了28 篇原創文章 · 獲贊 9 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章