W tej części dodamy pozostałe metody do naszej aplikacji, tak aby w pełni zarządzać rekordami w bazie z poziomu web serwisu. 

W poprzedniej części stworzyliśmy encję Book i kontroler. Teraz zaczniemy od małej zmiany w kodzie. 

Przejdźmy do klasy BookController w pakiecie controller.

Obecnie wygląda tak:

Dodamy teraz konstruktor klasy BookController, ponieważ od nowe wersji Spring zalecane jest wstrzykiwanie zależości (Dependency Injection) przez konstruktor, a nie pole klasy.

Oto zmiany:

Dodamy teraz metodę aktualizującą rekord w bazie.

Wyszukiwanie starego rekordu nastąpi bo zmiennej String, która w tym przypadku jest polem ‚isbn’ w klasie Book.

Wcześniej musimy zadeklarować metodę wyszukującą po ‚isbn’ w interfejsie BookRepository.

Tą metodę będziemy implementować w klasie BookController.

Poniżej BookRepository:

Możemy teraz przejść do klasy BookController i użyć powyższej metody:

Oczywiście łatwo zauważyć, że nie wykorzystujemy całych możliwości klasy Optional.

Nie skorzystaliśmy z takich metod jak choćby:

  • orElseThrow()
  • ifPresent()
  • orElseGet()

Pozostaniemy jednak przy tej najprostszej implementacji, a z kolejnymi częściami tego wpisu będziemy ‚refaktorować’ kod. 

Dodamy również możliwość kasowania rekordu:

Jeszcze raz cała klasa BookController poniżej:

Obecnie metoda findByIsbn() wykorzystywana jest tylko jako pomocnicza metoda sprawdzająca istnienie rekordu.

Jeśli chcesz możesz dodać metodę GET do klasy BookController i wzbogacić web serwis o wyszukiwanie rekordu po polu ‚isbn’ 😉 

Teraz prosty test naszego serwisu.

Wykorzystam do tego aplikację Postman:

Wyszukuję listę rekordów: 

Aktualizuję rekord:

Sprawdzam, czy rekord został zaktualizowany wywołując ponownie metodę GET z pierwszego screen’a Postman. 

Zrób to samo dla DELETE i POST. 

W razie problemów pisz tutaj lub na facebook jako pytanie do devlab. Odpowiem jak szybko się da 😉

Cały kod spakowany znajduje się tutaj (zip) lub tutaj (git)