gpt4 book ai didi

java - 将 JDBC ResultSet 转换为泛型类型?

转载 作者:行者123 更新时间:2023-12-01 13:59:43 24 4
gpt4 key购买 nike

我正在尝试为我的应用程序构建一个简单、轻量级的“DAO 层”,它只使用纯 JDBC(没有像 Hibernate、TopLink、MyBatis 等那样花哨的东西)。

public class AnimalDAO extends BaseDAO<Animal> {
private AnimalType type;
private String name;

public void insertAnimal(Animal animal) {
StingBuilder sql = new StringBuilder();
sql.append("INSERT INTO animals (");
sql.append("animal_type_id, animal_name ) VALUES (");
sql.append(animal.getType().getId());
sql.append(animal.getName());
sql.append(" )");

doSQL(sql.toString());
}
}

public class BaseDAO<T> {
private Long id;

protected T doSQL(String sql) {
// Typical JDBC code to hit a database with the "sql" query and return a ResultSet.
ResultSet result = queryDatabase(sql);

// Now, how do I turn "result" into type T such that, in the case of
// AnimalDAO#insertAnimal(Animal), result gets converted into an Animal?
return ???;
}
}

因此,我们的想法是在 BaseDAO 中有一个 doSQL(String) 方法,它将处理所有样板 JDBC 内容(制作准备好的语句、连接池、用于事务提交的 try-catch block 等)。然后,像 Animal 这样的子类只需要告诉 doSQL 要执行哪个查询。

问题是,我不确定如何将 JDBC ResultSet 转换为适当的 T 泛型类型,在 AnimalDAO 的情况下code> 是动物。有任何想法吗?提前致谢!

最佳答案

是的,我会遵循 Spring JDBC 模板模型并引入 RowMapper界面。让每种类型的对象告诉您如何管理它。

或者,更好的是,只需使用 Spring JDBC 模板。他们写出的代码比你我都好。为了简单起见,很难超越它。

关于java - 将 JDBC ResultSet 转换为泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409868/

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