[스프링부트 게시판] 9. SELECT 테스트

2022. 5. 3. 19:48·🚗 Backend Toy Project/스프링 부트 게시판
  • 이번 시간에는 데이터베이스에 들어있는 데이터에 대한 SELECT 작업을 수행해보도록 하겠습니다.
  • 우선 Postman을 통한 post 요청으로 다음과 같이 데이터베이스에 데이터를 추가해주었습니다.

MySQL

  • 이후 이전 시간에 생성하였던 DummyController 클래스에 아래의 코드를 추가해주었습니다. 여기서 '{ }'와 @PathVariable 어노테이션은 주소를 통해 파라미터를 전달받기 위해 사용하였습니다.

DummyController

  • 이제 우리는 파라미터를 전달받은 뒤 해당되는 데이터를 간단하게 출력해보는 작업을 수행할 텐데, 만약 전달된 파라미터에 부합하는 알맞은 데이터가 없다면, 즉 위를 예로 들자면 해당되는 id를 갖는 데이터가 없다면 이는 널(Null) 값이 될 것이며 이러한 결과를 반환한다면 프로그램에 문제가 생기게 될 수도 있을 것입니다.
  • 따라서 우리가 사용하는 JpaRepository 클래스에서는 데이터를 가져올 때, 예외처리를 수행할 수 있도록 다음과 같이 함수의 반환 값을 Optional 객체로 설정해두었습니다.

DummyController

  • 위처럼하면 데이터베이스에 저장되어 있지 않은 id 값이 전달되더라도 널(Null) 값이 아닌 새로운 User 객체가 생성되어 반환될 것입니다.
  • 또다른 방법으로는 다음과 같이 예외처리를 통해 오류 페이지와 함께 원하는 문구를 출력할 수도 있습니다.

DummyController

  • 이후 실행시킨 뒤 주소를 입력해보면 다음과 같이 출력되는 것을 확인할 수 있습니다.

올바른 데이터가 요청된 경우
올바르지 않은 데이터가 요청된 경우

  • 위처럼 작성할 수도 있지만 좀 더 간결하게 람다식으로도 작성할 수 있습니다.

DummyController

현재 우리가 작성한 코드에서는 웹 브라우저에게 데이터를 반환할 때 객체를 반환하고 있습니다. 이럴 경우 웹 브라우저는 위처럼 이를 JSON으로 받게 되는데 이러한 동작이 가능한 이유는 스프링 부트의 MessageConverter가 Jackson 라이브러리를 호출하여 오브젝트를 JSON으로 변환하여 전달해주기 때문입니다.

  • 이번에는 간단하게 모든 데이터를 출력하는 함수를 구현해보겠습니다.

DummyController

  • 역시 JSON의 형태로 출력되는 것을 확인할 수 있습니다.

JsonViewer


  • 이번에는 페이징(Paging)을 구현하기 위해 다음과 같이 코드를 추가해주었습니다.

DummyController

  • 페이징이란 말그대로 모든 데이터를 한 번에 보여주지 않고 페이지를 나눠 쪽수별로 제공하는 기능을 말합니다.
  • 이때 우리는 위처럼 페이지의 크기를 설정하여 출력되는 데이터의 양을 조절할 수도 있으며 정렬 기준, 정렬 방식을 설정하여 우선 순위를 설정할 수도 있습니다.
  • 이러한 기능을 개발자가 직접 구현하여 사용할 수도 있겠으나, JPA에서는 이를 편하게 사용할 수 있도록 Pageable이라는 객체를 제공하며 우리는 해당 객체를 사용하여 위처럼 간단한 Pagination을 수행할 수 있습니다.
  • 위 코드의 결과는 다음과 같습니다.

JsonViewer

  • 페이징 설정을 통해 크기를 2로 정렬 기준은 id 값으로, 정렬 방식은 내림차순 정렬하였기 때문에 위와 같은 결과가 출력된 것을 확인할 수 있습니다.
  • 만약 여기서 실질적인 데이터 부분만 출력하고 아래 추가로 붙는 부분은 생략하고 싶다면 다음과 같이 코드를 수정할 수 있습니다.

DummyController
JsonViewer


📌 References

  • https://www.youtube.com/watch?v=dPfjqBB-T4U&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=29 
 

GitHub - Daegwon-Kim/SpringBoot-JPA-Blog

Contribute to Daegwon-Kim/SpringBoot-JPA-Blog development by creating an account on GitHub.

github.com

저작자표시 (새창열림)

'🚗 Backend Toy Project > 스프링 부트 게시판' 카테고리의 다른 글

[스프링부트 게시판] 11. DELETE 테스트  (0) 2022.05.05
[스프링부트 게시판] 10. UPDATE 테스트  (0) 2022.05.03
[스프링부트 게시판] 8. 회원가입을 위한 insert 테스트  (0) 2022.05.02
[스프링부트 게시판] 7. 테이블 생성  (0) 2022.05.02
[스프링부트 게시판] 6. yml 설정하기  (0) 2022.05.01
'🚗 Backend Toy Project/스프링 부트 게시판' 카테고리의 다른 글
  • [스프링부트 게시판] 11. DELETE 테스트
  • [스프링부트 게시판] 10. UPDATE 테스트
  • [스프링부트 게시판] 8. 회원가입을 위한 insert 테스트
  • [스프링부트 게시판] 7. 테이블 생성
Baeg-won
Baeg-won
  • Baeg-won
    좋았다면 추억이고 나빴다면 경험이다.
    Baeg-won
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🍃 Spring, Spring Boot
        • 스프링 프레임워크 기초
        • 스프링 핵심 원리 - 기본편
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편
        • 스프링 MVC
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리..
      • 🥑 Web Technoloy
      • 🚗 Backend Toy Project
        • 스프링 부트 게시판
        • Photogram
        • Baeg-won Clothing Gallery
      • 🥇 Problem Solving
        • Breadth-First Search
        • Depth-First Search
        • Backtracking
        • Simulation
        • Two-pointer
        • Binary Search
        • Greedy
        • Dynamic Programming
        • Minimum Spanning Tree
        • Dijkstra
        • Floyd warshall
      • ☕ Java
        • 명품 자바 에센셜
        • Applications
      • 🍦 JavaScript
        • JavaScript 기초
      • 🐧 Linux
        • 이것이 리눅스다(CentOS 8)
      • 📟 Database
        • 혼자 공부하는 SQL
      • 🧬 Data Structure
      • 🎬 HTML
      • 🎤 Tech Interview
      • 📌 etc
        • Unity 2D Raising Jelly Game
        • C++
        • 영어 쉐도잉
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Baeg-won
[스프링부트 게시판] 9. SELECT 테스트
상단으로

티스토리툴바