Задать вопрос
Maks00088
@Maks00088
Обучаюсь Java/JavaEE /Php/Js

Как создать лист обьектов из Result Set?

Вопрос по поводу цикла. Допустим в сэти у меня 4 колонки или же 4 rows.
1.После while(rs.next()) в данном коде-> будут вызваны сеттеры 4 раза и создан один обьект ?
2.Допустим мне нужно создать лист обьектов , не до конца понятна структура Result Set с данными , если кто сможет дать пример кода я буду признателен.
3.next() возврашает true если есть следующая колонка , как проходит логика в данном коде в цикле ?
Создастся ли нужный обьект после первого цикла ?
Company company = beanFactory.getBeanInstance("company",classForMapping);
            while(rs.next()){  // 4 number of columns
                company.setId(rs.getLong("COMPANY_ID"));
                company.setCompName(rs.getNString("COMPANY_NAME"));
                company.setPassword(rs.getNString("COMPANY_PASSWORD"));
                company.setEmail(rs.getNString("COMPANY_EMAIL"));
            }
  • Вопрос задан
  • 233 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
как-то так
List<Company> list = new ArrayList();
            while(rs.next()){  // 4 number of columns
               Company company = beanFactory.getBeanInstance("company",classForMapping);
                company.setId(rs.getLong("COMPANY_ID"));
                company.setCompName(rs.getNString("COMPANY_NAME"));
                company.setPassword(rs.getNString("COMPANY_PASSWORD"));
                company.setEmail(rs.getNString("COMPANY_EMAIL"));
               list.add(company);
            }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ingush
Сеттеры будут взваны столько, сколько строк возврщаются из БД. Например БД возарвщает 2 строки соответсвующие вашей выборки, следовательно, если есть 4 колонки значит сеттеры будут вызваны 8 раз.
next() возвращает true если за курсором есть еще строка, т.е. если обьяснять с приведеныым примером раннее:
-> (это своего рода курсор
row1
row2
next() будет возращать true два цикла подряд. А здесь уже будет false, потомучто за курсором уже нет строки:
row1
row2
->

Понятно? С каждым вызовом next() курсор смещается вперед, сеттеры возращают данные соответсвующей строки на которую указывает курсор
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы