2013-04-18 58 views
2

我有一個使用JDBI(JDBC包裝器)訪問PostgreSQL數據庫的java程序。其中一列是陣列數據類型(mycolumn integer[])使用JDBI獲取Postgres數組數據

我在mapper類中使用了什麼?我認爲resultSet.getArray("mycolumn")是正確的做法,但我不確定如何從返回的java.sql.Array對象中獲取數據。

有關如何做到這一點的任何提示或良好的鏈接?

+1

提示:http://docs.oracle.com/javase/6/docs/api/java/sql/Array.html,'Array.getArray()'。 –

+0

雖然它返回一個對象...我不知道它是什麼類型,並且文檔沒有使我更清楚。 – Amasuriel

+0

底層數組類型由數據庫字段類型決定。您可以從JDBC元數據API中獲取詳細信息。或者,在對象上使用'getClass()'並以這種方式檢查它。 –

回答

1
 Array array = resultSet.getArray("mycolumn"); 
     return nonNull(array) ? (Integer[])array.getArray() : null ; 
+0

如何註冊這段代碼以便'@ MapResultAsBean'可以使用它? – Jorn

+0

我們不能使用@MapResultAsBean來解決這個問題。我們需要編寫一個映射器 – Manikandan

+0

我的意思是我想要一個帶'List '字段的Bean(如果List不可能的話,甚至是'int []'),並讓bean映射器填充ResultSet中的那個字段'。實際上,我已經通過獲取現有映射器並向現有代碼添加類型來完成此操作,但如果現有映射器是可擴展的,那將非常棒。 – Jorn