2013-04-18 38 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