Hansel

스프링 부트 / 야매 게시판 만들기 4 본문

Spring/기초

스프링 부트 / 야매 게시판 만들기 4

핑슬 2022. 3. 5. 20:52

메인 화면에는 추천수가 높은 게시글만 몇개 보여주고 나머지 전체 게시글은 따로 보여주는 방식이 나을거같아서 그 방향으로 틀었다.

 

Post의 경우 추천수를 변경해야 하기 때문에 Post 클래스에 해당 로직을 작성했고 Service를 통해 호출하도록 했다.

 public List<Post> findBySuggestion(){
        return em.createQuery("select p from Post p order by p.suggestion desc",Post.class)
                .setFirstResult(0)
                .setMaxResults(5)
                .getResultList();
    }

컨트롤러의 경우 어떤 글의 추천수가 올라가는지를 알아야 하기 때문에 id를 매개변수로 받아온다.

로직은 매우 간단하다. 몇줄 안된다.

메인화면에선 추천수를 내림차순으로 표시해야 하기 때문에 위와 같은 코드도 필요하다.

 

nav바가 모든 화면에 쓰이니 따로 분리했다.

id를 url로 넘기는 방식은 왼쪽 아래 박스와 같이 작성해주면 된다.

 

게시글만 따로 보여주는 Posts.html과 그 게시글의 자세한 내용을 표시하는 detail.html이다.

id를 넘겨주는것 말고는 따로 특별할 것도 없다.

 

다 작성하면 이렇게 된다.

제목, 작성자, 본문, 추천수 순으로 나타난다.

대충 부트스트랩을 이용한 css라 당연히 보기엔 별로지만 중요한건 그게 아니니까 괜찮다.

 

자세히 보기를 누르면 해당 글의 전체적인 내용을 보여주는데 딱히 이쁘지 않으니 굳이 캡쳐하진 않았다.

 

DB는 이렇게 나온다. 

 

조인을 통해 좀더 깔끔하게 보면 이렇게 나온다.

 

원래는 댓글과 카테고리까지 다 하려 했지만 댓글은 게시글의 방식과 너무 유사해서 딱히 얻을게 없어 보였고 카테고리는 queryDsl이나 jpa를 더 깊게 하고 다시 해보려 한다.

 

지금까지는 Repository의 save, find 등의 메서드를 직접 작성했지만 찾아보니 jpaRepository라는 인터페이스가 존재했고 그걸 implements 받아서 사용하면 굳이 작성할 필요 없이 알아서 된다는 것 또한 알게 되었다.

이제 좀 더 깊게 배우고 제대로된 프로젝트를 해야겠다.