본문 바로가기
IT/Java

SpringBoot/JPA part.8

by 성준하이 2022. 2. 6.
반응형

이번 포스팅에서는 CRUD중에 Read에 대해서 실습을 해볼것이다.

 

한가지의 id값을 get 메서드를 보낼 것이고 그 id의 레코드를 가져와서 콘솔에 출력하는 것 까지 진행을 해보도록 하겠다.

 

시작은 controller에서 부터 시작이 되므로 create처럼 똑같이 controller에서 시작을 할것이다.

 

controller에 아래와 같이 메서드를 추가 하였다.

  • controller 추가
@GetMapping("read")
public String findBook(@RequestParam Long bookId) {
   Optional<Book> book = bookRepository.findById(bookId);
   System.out.println(book);
   return null;
}

메서드는 Get메서드를 사용하였고 url 주소는 read로 받을것이다.

그리고 url 주소로 get은 물음표 이하고 파라미터를 설정해서 보낼수 있다.

localhost:8080/book/read?bookId=1

이런식으로 보낼수 있다.

 

RequestParam의 annotation은 이 물음표 이하 절의 값들을 설정해줄수 있다.

bookId를 받게 되고 그 받은 id로 bookRepository의 findById 함수에 bookId를 넣어주었다.

 

그리고 출력을 찍도록 하겠다.

 

저번 포스팅 처럼 APITester를 통해서 

Get으로 http://localhost:8080/book/read?bookId=1 의 url 주소를 날려보면 console 창에 bookId가 1인 책 정보가 출력이 되는것을 볼수 있다.

  • apiTester를 이용하여 request

 

참고로 여기서는 findById만을 사용하였지만 추가적으로 repository에 다른 컬럼으로 설정을 하여 받아올수도 있고,

여러개의 RequestParam을 받아서 다중 컬럼을 적용시킬수도 있다.

 

예를 들어보면 repository에 다음과 같이 한줄을 추가하고

controller에서 추가로 작성을 해볼것이다.

title은 물론 중복 될순 있지만 title로 검색을 해볼것이다.

  • repoistory에 기본키가 아닌 것들로 조건을 줄때 메서드 추가 작성

@Repository

public interface BookRepository extends JpaRepository<Book, Long> {

   Optional<Book> findByTitle(String title);

}

다음과 같이 findByTitle을 만들었고, controller에서 한줄 더 추가하였다.

@GetMapping("read")
public String findBook(@RequestParam Long bookId,@RequestParam String title) {
   Optional<Book> book = bookRepository.findById(bookId);
   System.out.println(book);
 
   Optional<Book> book1 = bookRepository.findByTitle(title);
   System.out.println(book1);

   return null;
}

이렇게 넣었고 다시 한번 APITester로 http://localhost:8080/book/read?bookId=1&title=2 이렇게 보내 보았다.

 

그럼 결과는 bookId가 1인 book 레코드와 title가 2인 book 레코드가 각각 보일 것이다.

 

참고로 book의 자료형을 단수로 지정을 했기에 복수가 나오는 값을 보내면 에러가 나니 주의하도록 한다..

 

반응형

'IT > Java' 카테고리의 다른 글

SpringBoot/JPA part.10  (35) 2022.02.08
SpringBoot/JPA part.9  (18) 2022.02.07
SpringBoot/JPA part.7  (20) 2022.02.05
SpringBoot/JPA part.6  (16) 2022.02.04
SpringBoot/JPA part.5  (9) 2022.02.03

댓글