13. Получить все записи из таблицы Demands
Условие задачи:
В базе данных есть таблица demands. Необходимо реализовать REST-эндпоинт, который вернёт все записи из этой таблицы.
Demands
+----+-------+--------+
| id | name | status |
+----+-------+--------+
| 1 | name1 | GOOD |
| 2 | name2 | |
| 3 | name3 | |
| 4 | name4 | |
+----+-------+--------+
Нужно реализовать минимальный набор компонентов:
JPA-сущность;
репозиторий;
REST-контроллер.
Спойлеры к решению
Подсказки
💡 Пометь класс
💡 Репозиторий можно унаследовать от
💡 Метод
💡 В контроллере создай обработчик
Demand аннотациями @Entity и @Table.💡 Репозиторий можно унаследовать от
JpaRepository<Demand, Long>.💡 Метод
findAll() уже определён в JpaRepository.💡 В контроллере создай обработчик
GET /api/v1/demands.Решение
Сущность:
@Entity
@Table(name = "demands")
public class Demand {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String status;
protected Demand() {
}
public Demand(String name, String status) {
this.name = name;
this.status = status;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public String getStatus() {
return status;
}
}
Репозиторий:
public interface DemandRepository
extends JpaRepository<Demand, Long> {
}
Контроллер:
@RestController
@RequestMapping("/api/v1/demands")
public class DemandController {
private final DemandRepository demandRepository;
public DemandController(
DemandRepository demandRepository
) {
this.demandRepository = demandRepository;
}
@GetMapping
public List<Demand> getAllDemands() {
return demandRepository.findAll();
}
}
Запрос:
GET /api/v1/demands
Пример ответа:
[
{
"id": 1,
"name": "name1",
"status": "GOOD"
},
{
"id": 2,
"name": "name2",
"status": ""
}
]
Метод findAll() выполняет получение всех строк таблицы и возвращает их в виде списка.