使用jdbi遍历ResultIterable对象

时间:2018-09-11 10:28:20

标签: java iterator iterable jdbi

昨天,我发布了一个有关从Db检索数据并对其进行迭代的问题。有人帮助我将JDBI指向原始数据类型。

注意事项:我是最重要的测试人员,并且刚刚开始探索JDBI进行一些自动化测试。

因此,我认为我已经改进了先前的解决方案,但是我正在努力实现最好的方法来迭代我的数据集,因为现在可以对其进行检索了。

这是我返回数据集的方法:

    public List<FlightDataBean> lastFlightBookedResults(String supplierCode, String channel) {

    String sqlQuery = getData(supplierCode, channel);

    List<FlightDataBean> dataSet = jdbi.withHandle(handle ->
            handle.createQuery(sqlQuery)
                    .mapToBean(FlightDataBean.class)
                    .list());

    return dataSet;
}

这是我的Bean类:

public class FlightDataBean {

private String startDate;
private String origin;
private String destination;

public FlightDataBean(){

}

public FlightDataBean(String startDate, String origin, String destination) {
    this.startDate = startDate;
    this.origin = origin;
    this.destination = destination;

}

public String getStartDate() {
    return startDate;
}

public void setStartDate(String startDate) {
    this.startDate = startDate;
}

public String getOrigin() {
    return origin;
}

public void setOrigin(String origin) {
    this.origin = origin;
}

public String getDestination() {
    return destination;
}

public void setDestination(String destination) {
    this.destination = destination;
}

}

以下是返回的数据集的示例,该数据集包含30行3列:

enter image description here

很明显,我可以通过执行以下操作来检索单个结果:

 List<FlightDataBean> resultSet;
    resultSet = getFlightData(syndicatorName);

    String startDate = (resultSet.get(0).getStartDate());
    String origin = String.valueOf((resultSet.get(1)).getOrigin());
    String destination = String.valueOf(resultSet.get(2).getDestination());

我只需要一个指针,就可以遍历全部30种方法的最佳/最有效/最安全的方式,因为我将结果用作搜索测试数据,并且可能需要在使用该数据集的另一种方法中依次使用每个结果直到结果返回到网站上。

我将继续学习JDBI,但与此同时,任何帮助都是很好的

1 个答案:

答案 0 :(得分:0)

我已经用类似的答案回答了您的最后一个问题...您可以熟练使用适合当前情况的代码:

for (FlightDataBean i : resultSet){
    String startDate = i.getStartDate();
    String origin = i.getOrigin();
    String destination = i.getDestination();
    //further code, go on from here.
}

for循环只需要对resultSet中的每个Bean提取3个值(然后执行您随后添加的代码)即可。