Вернуть объект после 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;
}