2012-02-02 60 views
2

我是MyBatis的新手,我的項目需要我從Oracle數據庫讀取數據,填充對象,必要時重置數據並將其重新插入數據庫。MyBatis 3.x試圖讀取一個集合並填充對象

我想讀取嵌套表的數據。嵌套表格列由Oracle定義的自定義對象集合組成。更具體地說,表格中的每個記錄都與自定義對象的集合相關聯,並且自定義對象由三個字段組成,即nickname,date of birthaddress

我實際上在嘗試檢索數據時獲取oracle.sql.ARRAY數據類型。我在這裏遇到的問題是,我無法將這個由JDBC通過MyBatis提取的oracle.sql.ARRAY映射到我的對象。我所能做的就是讓ARRAY將它轉換爲對象數組,然後轉換爲Struct並遍歷屬性以獲取值。

我總是可以手動構建bean,但我知道它不是一個有效的方法。我想以它填充我的對象的方式來配置我的結果地圖。但是,迄今爲止我還沒有做到這一點。如果有人對這個問題有什麼建議,請幫助我。

+0

AngerClown回答得很好,使用類型處理程序。看到這個問題編寫數組。 http://stackoverflow.com/questions/5779584/how-do-you-write-arrays-to-an-oracle-10g-xe-db-using-ibatis – Andy 2012-02-03 19:12:26

回答

1

我認爲你可以得到這個工作與自定義TypeHandler

在你的ResultMap,做這樣的事情:

<result property="arrayOne" column="array[1]" typeHandler="customArrayHandler" /> 
<result property="arrayTwo" column="array[2]" typeHandler="customArrayHandler" /> 

然後在你CustomArrayHandler.getResult()實現,可以解析真實列名和索引了。然後從ResultSet中檢索數組並從索引中獲取所需的值。

1

這需要MyBatis中很多Oracle特定的代碼,我知道他們一直試圖避免RDMS特定的代碼。我會編寫自己的數據映射器來將數組映射到您需要的任何模型對象。

+0

非常感謝回覆。我確實玩過resultMap,但無濟於事。如果其他人遇到同樣的問題,請告訴我,如果您對我有任何建議。 – avidLearner 2012-02-02 19:18:03

相關問題