Java字段猜测
我正在开发一个从数据库中提取数据的小型Java库 假设有一个通用Java类: 公共类MyClass{Java字段猜测,java,database,class,Java,Database,Class,我正在开发一个从数据库中提取数据的小型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
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
在实践中,如果可能,如何实施步骤2.2?
我想这是可能的,因为我在PHP框架中使用了这种方法。您几乎肯定希望在这里使用第三方映射器 另外,请阅读这篇文章,因为这是最好的两篇文章,答案也很好:
它并不太复杂,但需要一些思考。有许多潜在的边缘情况(例如继承)以及如何处理隐式类型转换(当类字段和列数据类型不直接兼容时)寻找“反射”。看起来你正在构建一个ORM映射器。看看现有的解决方案可能是值得的。它们并不象JPA/Hibernate那么重,例如考虑iBATS或谷歌。我会看看它们两个。谢谢。你可以。而且他可以求助于代码> java。SQL。这将调用基于类型的setter/getter方法。这是一个一小时的工作!当然,他需要
java.lang.reflect
中的类来解析getter/setter方法名称。最后,ORM会更好,因为它嵌入了很多好的特性,但我同意这不是必须的!ORM本质上也做同样的事情(有点复杂,上面放了很多糖,但原理完全一样),我假设TC想将此作为一种学习体验或是一项任务来完成。对于一个普通项目,使用ORM可以节省调试时间和白发。我同意你的观点。这与我的观点相同,但有一点改进。我只想指出,ORM通常通过生成类t来查看所选数据库然后,通过查询(通常由查询生成器提供)可以很容易地从所表示的表中获取对象。
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.
}