Java 动态创建表示表中一行的bean(由于复杂的SQL查询而返回的结果集)
举个例子,我有两张桌子Java 动态创建表示表中一行的bean(由于复杂的SQL查询而返回的结果集),java,sql,reflection,jdbc,Java,Sql,Reflection,Jdbc,举个例子,我有两张桌子 table1 ( name varchar2, id int, customer bit, --or boolean ) table2 ( name2 varchar2, id2 int, dob Date, ) 现在,列的编号、名称和数据类型有所不同。它们将根据查询返回,如select*from table1或select id2 from table2 现在是否可以创建一个bean来动态地表示返回的行(根据数字、名称和数据类型) 例如,对于表1,我应该能够创建如下
table1 (
name varchar2,
id int,
customer bit, --or boolean
)
table2 (
name2 varchar2,
id2 int,
dob Date,
)
现在,列的编号、名称和数据类型有所不同。它们将根据查询返回,如select*from table1
或select id2 from table2
现在是否可以创建一个bean来动态地表示返回的行(根据数字、名称和数据类型)
例如,对于表1,我应该能够创建如下内容
class Table1{
private String name;
private int id;
private boolean customer;
//Corresponding getters and setters
}
表2也是这样
是否可以创建一个bean来表示返回的行
(在数量、名称和数据类型方面)动态
是的,这在Java中是可能的。使用
JPA
或Hibernate
。它将您的行映射到对象。一个解决方案可以是浏览并迭代所有列:使用创建带有字段和相对访问器的POJO非常简单(您也可以查看)。如果您使用的是特定的RDBMS类型,那么检测列的JDBC类型可能有点困难。您考虑一些<代码>对象关系映射框架< /代码>吗?像
hibernate
?@bksantiagoop询问在运行时动态创建类。动态创建bean有什么意义?您将无法事先针对其方法进行编码。你可以只使用返回字段的映射吗?如果我使用Map,我将如何区分查询返回的10000行?我想OP是在询问如何在运行时动态创建一个类。否则,我想他知道这个琐碎的答案。所以问题基本上是关于反思。