基于结果集创建对象

时间:2014-10-30 07:51:01

标签: java sql jdbc resultset

我对基于ResultSet创建的对象有疑问。

假设我有一个产品DAO类:

public class ProductDAO
{    
    ...
    ResultSet products = statement.executeQuery("SELECT * FROM PRODUCT ");  

    if (products .next()) {   
       int prodId = products .getInt("id");           
       String prodName = products .getString("name");    
       Product product =  new Product(prodId, prodName);       
    }          
    ...
}

假设SQL查询返回5行。结果,产品对象最终会包含什么?它是否只包含最终返回行的值(在本例中为第5行)?

1 个答案:

答案 0 :(得分:2)

如果您的查询提取多行,则应该有一个循环并创建多个Product实例。您当前的代码只会读取第一行并创建一个Product实例。

这是一个更好的实现,可以加载查询返回的所有数据:

List<Product> productList = new ArrayList<Product>();
while (products.next()) {   
   int prodId = products .getInt("id");           
   String prodName = products .getString("name");    

   Product product =  new Product(prodId, prodName);       
   productList.add(product);
}