【发布时间】:2012-05-07 23:24:12
【问题描述】:
我有以下功能:
public Map<Integer, Product> fetchAllProducts() {
Map<Integer, Product> pArr = new HashMap();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT id, intro, content, price FROM Product");
while (rs.next()) {
pArr.put(rs.getInt("id"), new Product(rs));
}
st.close();
} catch (SQLException ex) {
//...
}
return pArr;
}
它从 mySQL 表 Product 中获取所有行,并为每一行创建一个新的 Product 类。产品构造函数:
public Product(ResultSet rs) {
try {
price = rs.getInt("price");
content = rs.getString("content");
intro = rs.getString("intro");
} catch (SQLException ex) {
//...
}
}
我的问题是:有没有更好的方法将结果列分配给Product 中的变量?代码price = rs.getInt("price"); 等等似乎是多余的,不是吗?完美的是,如果我将查询语句更改为SELECT intro, content, tax, delivery FROM ...,构造函数会自动将其分配给构造函数中的适当变量(即介绍、内容、税收、交付)。这可以用 Java 完成还是我只是在做梦?
【问题讨论】:
-
如果我理解正确,您希望在 SQL 查询中使用 Java 变量,以便自动分配它们。好吧,从 SQL 不能有 Java 变量的意义上说,这是不可能的。如果你真的想要这样的东西,为什么不试一试制作这样的东西!顺便说一句,试试 Ruby on Rails。它可能会让你更接近你的梦想。