[Spring]데이터 목록 List 조회(Read)하기

심주흔·2023년 11월 27일
1

springboot3

목록 보기
6/7
post-thumbnail

단일 데이터를 조회할 때는 Repository에서 Entity만을 반환한다면, 데이터 목록을 조회할 때는 Entity의 List를 반환한다.

🍄 URL 요청받기

일단 조회 요청이 URL로 들어왔을 때 처리할 수 있는 controller 코드를 기본적으로 작성한다.

현재는 완성된 코드이지만 요지는 @GetMapping("/articles")를 선언해 URL 요청을 받고 index()코드가 작동되도록 한다.

🍄 데이터 조회해 출력하기

🍂 DB에서 모든 Article 데이터 가져오기

DB에서 모든 데이터를 가져오기 위해서는 Repository에 있는 findAll() 메서드를 사용한다. 메서드를 수행한 결과는 (코드 상에서) articleEntityList라는 변수에 데이터의 묶음을 받아 오는 것이므로 List<Article>로 설정한다. > DB에서 조회한 데이터 묶음을 리스트에 담긴 Article 타입으로 가져온다.

🍃 캐스팅(casting)

: 타입을 변환하는 것, 형변환이라고도한다. 자바에서 상속관계가 잇는 특정 객체는 넓은 범위로 형변환하는 Upcasting 좁은 점위로 형변환하는 Downcasting이 있다.

위 오류를 살펴보면 findAll() 메서드가 반환하는 타입은 Iterable인데 작성한 타입은 List이기 때문에 오류가 발생한다. 이를 해결하기 위한 방법이 Casting인 것이다.

🐚 Upcasting

Iterable<Article> articleEntityList = articleRepository.findAll();

🐚 Downcasting

List<Article> articleEntityList = (List<Article>)articleRepository.findAll();

🍃 ArrayList

데이터타입은 변환하는 방법에는 casting뿐만 아니라 ArrayList를 사용할 수도 있다. findAll() 메서드가 Iterable이 아닌 ArrayList를 반환하도록 수정하는 것이다.

Repository 코드를 살펴보자.

public interface ArticleRepository extends CrudRepository<Article, Long> {}

코드를 보면 ArticleRepositoryCrudRepository를 상속하고 있다.
CrudRepository의 메서드를 Override 해야한다.

Override 방법
오른쪽 버튼을 누르고 Generate -> Override Methods -> findAll():Iterable<T>를 선택하면 자동으로 오버라이딩 코드가 생성된다.

🍂 가져온 Article 묶음을 모델에 등록하기

가져온 데이터를 받은 articleEntityList를 뷰 페이지로 전달할 때는 모델을 사용한다.

model.addAttribute() 메서드로 전달할 데이터 묶음인 articleEntityList를 "articleList"라는 이름으로 등록한다.

🍂 사용자에게 보여 줄 페이지 설정하기


뷰 페이지를 설정하는 코드이다. article 디렉토리 안에 index.mustache 파일이 return되도록 한다.

🍃 {{#변수}} {{/변수}}

앞서 모델에서 articlesList라는 이름으로 articlesEntityList를 등록했다. 뷰 페이지에서는 이렇게 모델에 등록한 articlesList를 받아온다.

profile
이봐... 해보기는 했어?

1개의 댓글

comment-user-thumbnail
2023년 11월 28일

어이 데메..! 키미노 턴 데스다

답글 달기