1

我正在开发一个从数据库中提取数据的小型 Java 库。

假设有一个通用的Java 类:

公共类 MyClass {

   public int valueA;
   public String valueB;
   public Double valueC;

   //getter and setter methods.
}

之后,我定义了一个 SQL 查询字符串,并获得了泛型类的类MyClass

String sql = "Select c.valueA, c.valueB, c.valueC from my_table c";
Class<MyClass> type = MyClass.class;
List<MyClass> results = extractData(sql, type)M   

该方法extractData类似于以下方法:

public<T> List<T> extractData(String sql, Class<T> type){
  //1)Do everything that is necessary to retrieve a ResultSet by the sql String.   
  //2)Then, for each row in the ResultSet
  //2.1)Create a new instance of object of type T.
  //2.2)Automatically matches the field name from the query
  //   with the field name of the specified class.
  //2.3) add the object to the list to be returned.
  //3) return the list of results of type T.
}

在实践中,如果可能的话,我该如何实施步骤 2.2?

我想这是可能的,因为我在 PHP 框架中使用了这种方法。

4

2 回答 2

2

您需要的是结果集元数据(获取列的名称),以及用于分析类和设置字段的反射。期望在两者之间编写大量粘合代码(例如,根据您需要猜测您为每一列使用的 getXXX()/数据类型的类的字段类型)。

它并不过分复杂,但需要一些思考。有许多潜在的边缘情况(例如继承)以及如何处理隐式类型转换(当类字段和列数据类型不直接兼容时)。

于 2013-04-26T13:29:05.983 回答
0

您几乎肯定想在这里使用第三方ORM映射器。

在 Wikipedia 上查看此框架列表

另外,请阅读此线程,因为这是最好的两个,答案也很棒:Hibernate Vs iBATIS

于 2013-04-26T12:34:19.830 回答