본문 바로가기

TIL

<스프링 부트 Spring boot> 게시판 구현 - 글 목록 조회

- 게시판 글 목록 조회 기능

스프링보다 훨씬 간편하게 글 목록 조회 기능 구현이 가능하다. 순서는 다음과 같다.

 

 

1) Controller에 글 목록 조회 시 실행되는 메서드를 만든다. 매핑은 Get으로 한다.

	@GetMapping("list")
	public ModelAndView getList(ModelAndView mv, NoticeVO noticeVO) throws Exception{
		List<NoticeVO> list = noticeService.getList(noticeVO);
		mv.addObject("noticeList", list);
        return mv;
	}

VO 객체를 통해 글 목록에 대한 정보를 담아 Service로 보낸다. Service로부터 받아온 데이터는 다시 List 타입의 list 변수에 담아 ModelAndView를 이용해 객체에 바인딩하여 리턴한다.

 

 

2) Service에서는 호출받은 메서드를 실행하는데, 해당 메서드에서 다시 Repository 메서드를 호출한다. Repository 메서드를 호출하여 받은 리스트는 역시 List 타입의 list 변수에 담아 리턴한다.

	public List<NoticeVO> getList(NoticeVO noticeVO) throws Exception{
		List<NoticeVO> list = noticeRepository.getList(noticeVO);
		return list;
	};

 

 

3) Repository 인터페이스에서는 Service를 통해 호출받은 메서드를 실행한다. 실제 실행은 Mapper.xml에서 이루어진다. 

public List<NoticeVO> getList(NoticeVO noticeVO) throws Exception;

 

 

4) Mapper.xml에서는 DB에 SQL 쿼리문을 전달하여 처리한 결과를 NoticeVO 타입으로 보낸다.

<select id="getList" parameterType="NoticeVO" resultType="NoticeVO">
  		select * from destudynotice
</select>

이후 4)->3)->2)->1)의 역순으로 작업이 이루어지며, 최종적으로 Controller가 처리한 결과를 jsp(View)에서 받게된다.

 

 

5) View 역할을 하는 jsp에서는 표 태그로 결과를 받아 출력한다. 아래는 부트스트랩을 이용하였기 때문에 관련 코드가 포함되었다.

<table class="table">
	<thead>
		<tr id="sector">
			<th scope="col">번호</th>
			<th scope="col">제목</th>
			<th scope="col">작성자</th>
			<th scope="col">조회수</th>
			<th scope="col">작성일</th>
		</tr>
	</thead>
	<tbody>
		<c:forEach items="${noticeList}" var="noticeVO">
			<tr>
				<th scope="row">${noticeVO.num}</th>
				<td><a href="./select?num=${noticeVO.num}">${noticeVO.title}</a></td>
				<td>${noticeVO.writer}</td>
				<td>${noticeVO.hit}</td>
				<td>${noticeVO.date}</td>
			</tr>
		</c:forEach>
	</tbody>
</table>