Board의 컬렉션을 조회, 프론트 확인먼저!!
index.mustache 문서 전체 코드, 프론트에 사용된다.
{{> layout/header}}
<h1>
{{#sessionUser}}
{{username}}
{{/sessionUser}}
</h1>
<div class="container p-5">
{{#boardList}} // 해당 섹션이 게시물 개수 만큼 반복 생성된다.
<div class="card mb-3">
<div class="card-body">
<h4 class="card-title mb-3">{{title}}</h4>
<a href="/board/{{id}}" class="btn btn-primary">상세보기</a>
</div>
</div>
{{/boardList}}
<ul class="pagination d-flex justify-content-center">
<li class="page-item disabled"><a class="page-link" href="#">Previous</a></li>
<li class="page-item"><a class="page-link" href="#">Next</a></li>
</ul>
</div>
{{> layout/footer}}
HTML
복사
게시물 전체를 조회하는 DB 연동
쿼리문이 잘 작동하는지 먼저 확인
// 콘솔 주소
http://localhost:8080/h2-console/
// 전체 조회 쿼리문
select * from board_tb order by id desc
Java
복사
findAll() 메소드 구현
package shop.mtcoding.blog.board;
import jakarta.persistence.EntityManager;
import jakarta.persistence.Query;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
@RequiredArgsConstructor //생성자 주입 문법
@Repository // bean객체 등록
public class BoardRepository {
private final EntityManager em; // final선언 되어야 의존성 주입 완성
private final BoardRepository boardRepository;
public List<Board> findAll(){ // 조회된 데이터를 담을 컬렉션 객체 Board타입을 받는다.
Query query = em.createNativeQuery("select * from board_tb order by id desc", Board.class);
return query.getResultList(); // getResultList는 조회된 여러결과값을 배열로 담는다.
}
}
SQL
복사
쿼리에 잘 담기는지 테스트 확인 → foreach문 구현후 URL로 접속하면 된다.
@GetMapping({ "/", "/board" })
public String index(HttpServletRequest request) {
List<Board> boardList = boardRepository.findAll();
// 테스트용 코드 forEach문
for (Board a : boardList){
System.out.println(a);
}
request.setAttribute("boardList", boardList);
return "index";
}
Java
복사
URL접속 주소 넣고 콘솔창을 확인해보자.
// 아래 URL을 주소창에 넣고 엔터
http://localhost:8080/
Java
복사
확인완료!