Вернуть объект после SELECT запроса

Верно ли такое решение, для того, чтобы вернуть объект после SELECT запроса? Если нет, то прошу помочь, как лучше реализовать.

public Object selectValue() throws SQLException {
    ResultSet resultSet = super.executeSqlValue("SELECT c.id,c.name FROM class_rooms AS c " +
            "INNER JOIN pupils_in_class_rooms AS in ON c.id = in.idClassRooms");
    while (resultSet.next()) {
        ClassRoom classRoom = new ClassRoom(resultSet.getInt(1), resultSet.getString("name"));
        System.out.println(classRoom.getName());
    }
    return resultSet.next();
}

Ответы (1 шт):

Автор решения: Alexander Chernin

Если вы хотите получить один объект, то надо делать так:

// Либо вернется объект ClassRoom, либо null, если такой записи в таблице нет
public ClassRoom selectValue() throws SQLException {
    ResultSet resultSet = super.executeSqlValue("SELECT c.id,c.name FROM class_rooms AS c " +
            "INNER JOIN pupils_in_class_rooms AS in ON c.id = in.idClassRooms");
    ClassRoom classRoom = null;
    if (resultSet.next()) { // if, а не while
        classRoom = new ClassRoom(resultSet.getInt(1), resultSet.getString("name"));
        System.out.println(classRoom.getName());
    }
    return classRoom;
}

А если много, то так:

// возвращаем массив комнат
public List<ClassRoom> selectValue() throws SQLException {
    ResultSet resultSet = super.executeSqlValue("SELECT c.id,c.name FROM class_rooms AS c " +
            "INNER JOIN pupils_in_class_rooms AS in ON c.id = in.idClassRooms");
    List<ClassRoom> rooms = new ArrayList<>();
    while (resultSet.next()) {
        classRoom = new ClassRoom(resultSet.getInt(1), resultSet.getString("name"));
        rooms.add(classRoom);
        System.out.println(classRoom.getName());
    }
    return rooms;
}
→ Ссылка