Получить все записи из таблицы Demands

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() выполняет получение всех строк таблицы и возвращает их в виде списка.