gpt4 book ai didi

java - 是否可以将基本的 JDBC SQL 类型映射到 Java 类?

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:45 26 4
gpt4 key购买 nike

当使用 getObject 方法从 ResultSet 对象中检索列时,类由 JDBC 驱动程序选择。我正在寻找一种方法来选择在运行时检索列的类。

在下面的示例中,类型 Class1 是使用整数变量 T 创建的。

Class Class1<T>
{
public T getColumn(DataSource ds)
{
T value = null;
Connection con = null;

try
{
con = ds.getConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select 1 from dual");
rs.next();
Object o = rs.getObject(1); // I want an Integer but a BigDecimal is created!
value = (T) o; // ClassCastException here!
rs.close();
st.close();
}
finally
{
if (con != null) { con.close(); }
}

return i;
}
}

ResultSet 类提供了一个名为 getObject 的方法,它接受一个列参数和一个 Map 类型参数。此类型 Map 仅用于 UDT(用户定义类型)。我还需要将此功能应用于基本 SQL 类型。我知道我可以使用 switch/case 语句对此实现解决方案,但我正在努力避免这种情况。这可能吗?

编辑

我应该提到我使用的是 Java 1.6。看起来这可能已经在 1.7 中解决了。感谢 JB Nizet 的引用。

最佳答案

您可能必须编写自己的代码。您可能必须对收到的数据进行转换。为避免 switch/case,您可以使用精确的 ORM 工具,如 Hibernate,这将允许您的 Pojo 具有与表列一样的精确名称,并且它们会自动使用列中的数据填充您的 Pojo。在此之后,您可以为每一列编写数据转换代码。像 Hibernate 这样的 ORM 工具,MyBatis 会为你做映射。

关于java - 是否可以将基本的 JDBC SQL 类型映射到 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25435403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com