Перебор объекта ResultIterable с использованием jdbi - PullRequest
0 голосов
/ 11 сентября 2018

Вчера я опубликовал вопрос, касающийся извлечения данных из базы данных и ее перебора.Кто-то услужливо указал мне на 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 голосов
/ 11 сентября 2018

Я уже ответил на ваш последний вопрос аналогичным ответом ... вы можете просто адаптировать код под ваш текущий случай:

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

Цикл for ничего не говорит, кроме как для каждого Бина вваш resultSet, извлеките 3 значения (и сделайте код, который вы добавили впоследствии).

...