CRUD V1-07. 리스트 목록 불러오기

kimsoapsoap's avatar
Aug 26, 2024
CRUD V1-07. 리스트 목록 불러오기
글쓰기를 했으니 작성된 글을 목록에 불러오는 조회 기능을 만들어 보자.
 

1. 전체 조회 기능 만들기

 
 

1-1. BoardRepository에 findAll() 기능을 만들어 준다.

public List<Board> findAll() { //여기 두 번째 전달자에 들어갈 수 있는 클래스는 @Entity가 붙어서 관리되는 클래스를 넣어서 맵핑한다. Query query = em.createNativeQuery("select * from board_tb order by id desc", Board.class); //getSingleResult()는 primary key로 1건의 데이터를 검색할 때 사용하고 //이렇게 복수의 검색 결과가 필요할 때는 getResultList()를 사용한다. List<Board> boardList = query.getResultList(); return boardList; }
 
 
 

1-2. 기능 만든 뒤 테스트 진행

@Test public void findAll_test() { // given // when boardRepository.save("제목1", "내용1"); boardRepository.save("제목2", "내용2"); List<Board> boardList = boardRepository.findAll(); // eye for (Board b : boardList) { System.out.println(b); } }
다음 챕터인 //given //when //then 으로 하는 JUNIT 테스트 이후에는 //then을 사용할 것이다.
 
 
 
테스트 돌려 보면 모든 게시글 조회하는 기능이 잘 작동한다.
notion image
 
 
 
 

2. 컨트롤러 설정

 

2-1. 컨트롤러에서 request객체의 속성을 통해 view에 정보 전달

 
@GetMapping("/board") public String list(HttpServletRequest request) { List<Board> boardList = boardRepository.findAll(); request.setAttribute("models", boardList); return "board/list"; }
request에 속성 이름 “models”에 게시글 리스트를 정보를 저장한다
 
 
 
 
 

3. view 설정

 

3-1. mustache 설정

 
mustache는 기본적으로 requset와 session의 속성에 접근하지 못하므로
application.properties 설정 추가해준다.
spring.mustache.servlet.expose-request-attributes=true spring.mustache.servlet.expose-session-attributes=true
 
 

3-2. mustache 문법

{{#A}} {{/A}} List<Board> list를 request 속성에 "models"로 전달하면 mustache에서 {{#models}} 와 {{/models}} 이 사이에 태그를 넣으면 for-each반복문으로 돌아간다. {{#A}} {{/A}} 내부에서의 변수명 list를 전달해서 하나씩 반복하기 때문에 객체를 담은 속성이름은 필요 없다. 그냥 객체의 필드명을 {{title}}, {{content}} 이러면 해당 객체의 필드값을 출력하면서 반복 {{속성이름}} 만약 객체값이 아니라면 그냥 {{속성이름}} 적으면 바로 해당 값이 꺼내진다 {{속성이름.필드이름}} 객체 데이터를 담은 속성의 속성이름.필드이름을 {{ }}로 감싸면 바로 해당 속성에 담긴 객체의 멤버 변수 값을 꺼낸다. request 속성 "board"에 Board 객체를 전달했다고 하면 id와 content를 꺼낼 때 {{board.id}} 와 {{board.content}} 로 꺼낸다.
 
 
 

3-3. view 설정

Controller에서 models에 넣어줬으니 {{#models}} {{/models}}를 사용하고 그 사이에 반복을 돌릴 태그를 넣어 줬다.
notion image
 
 
 
 

4. 게시글 조회

 
게시글을 추가했더니 리스트를 잘 가지고 온다.
notion image
 
Share article

zerfa