【问题标题】:ResultSet to a POJO that contains and a arraylist of another POJOResultSet 到一个 POJO,其中包含另一个 POJO 的数组列表
【发布时间】:2017-05-22 08:25:06
【问题描述】:

希望有人可以帮助我。我有一个具有以下结构的 POJO:

public class Invoice{

private String docNum;
private String customer;
private ArrayList<InvoiceDetails> invoiceDetails;

/* Getters and setters*/
}

另外一个 POJO 如下

public class InvoiceDetails{

private String taxRate;
private Double taxAmount;
private Double amount;

/* Getters and setters*/
}

我想知道的是从这样的结果集中填充 Pojo Invoice 的最佳方法:

String sql= "SELECT  InvoiceNumber, Customer, TaxRate, TaxAmount,Amount FROM TAX_VIEW WHERE Date=?"
PreparedStatement pst = cn.prepareStatement(Config.SQL_FACTURAS, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
     pst.setDate(1, date);
     ResultSet rs = pst.executeQuery();

假设ResultSet 可以为同一张发票返回多条记录,是否可以一劳永逸地完成,而无需第二次迭代? 非常感谢

【问题讨论】:

  • 你的表结构是什么?在我的脑海中,你应该在这里加入。
  • 源它是 SQL Server 中的一个视图。原来的表确实是联结的。

标签: java sql arraylist resultset pojo


【解决方案1】:

在您看来,我想已经有一个连接。我想 Invoice.docNum 与 SELECT 中的 InvoiceNumber 相同。 (为什么会有不同的名字?) 因此,您应该在您的选择中添加“ORDER BY InvoiceNumber”,并在处理循环中验证它的更改。代码是伪代码,未经测试:

ResultSet rs = pst.executeQuery();
Invoice invoice=new Invoice();
while(rs.next()){
    if (invoice.getDocNum().compareTo(rs.getString(1))!=0) {
         // This is a new Invoice, so process previous if not the first one
         // and create a new instance
         invoice=new Invoice();
         invoice.setDocNum(rs.getString(1));
         invoice.setCustomer(rs.getString(2));
         invoice.setInvoiceDetails(new ArrayList<InvoiceDetails>());
    }
    InvoiceDetails invoiceDetails = new InvoiceDetails();
    invoiceDetails.setTaxRate(rs.getString(3));
    // ... further member settings, and finally add to list:
    invoice.getInvoiceDetails.add(invoiceDetails);
}
// finally process the last Invoice if it is not empty

【讨论】:

  • 完美!!。这正是我一直在寻找的。它就像一个魅力。非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 2020-02-24
  • 2019-09-06
相关资源
最近更新 更多