본문 바로가기

Spring Boot

게시판 게시글 정렬 하는법

까먹기 전에 언능 기록해야지

코드들은 현재 공부 중인 프로젝트에서 가져왔음

 

 

1. Repository

 

public interface ArticleRepository extends JpaRepository<Article, Long> 

    @Query("SELECT p FROM Article p ORDER BY p.id DESC")
    List<Article> findAllDesc();

}

 

Repository에 해당 쿼리문을 작성한다

정렬하는데 OREDER BY를 사용했다

예제 코드에서는 Article이라는 테이블에서 id를 내림차순을 한걸 확인할 수 있다

그리고 메서드를 정의해준다

 

2. Service

 

 @Transactional
    public List<Article> findAllDesc(List<Article> articles) {
        return articleRepository.findAllDesc();


    }

 

그리고 Service 파일에서 해당 메서드를 구현해주었다

파라미터를 리스트 타입으로 받아준다

 

3. Controller

 

 @GetMapping("/articles")
    public String index(Model model) {
        List<Article> articleList = articleRepository.findAll();

        model.addAttribute("articles", articleService.findAllDesc(articleList));
       

     
        return "articles/index";
    }

 

다음은 Controller부분

index메서드는 메인 페이지를 보여주는 메서드이다

그리고 메인 페이지에 게시글 리스트들이 노출되고 있다

우선 리스트에 게시글들을 저장한다

그 후에 모델 객체에 서비스에서 구현한 정렬 메서드를 저장한다

 

4. Mustache

 

    {{#articles}}
        <tr>
            <td>{{id}}</td>
            <td>
                <a href="/articles/{{id}}">{{title}}</a>
            </td>
        </tr>
    {{/articles}}

 

필자는 mustache사용 중

모델 객체에 저장된 데이터를 view에 뿌려준다

 

 

id를 기준으로 내림차순으로 정렬된 걸 확인할 수 있다

 


 

사실 게시글 정렬은 굉장히 쉽게 했다

원래는 게시글 안에 댓글을 정렬하고 싶었는데, 생각보다 힘들었다

댓글 정렬은 정상작동을 하는데, A게시글에 단 댓글이 B게시글에도 노출이 되는 문제가 발생했다

한 이틀 정도 이거에만 시간을 썼는데, 끝내 해결을 못함 ㅜㅜ

게시글 테이블과 댓글 테이블을 연결시킨 다음에, 레파지토리에 쿼리문을 작성하고 나머지는 위에 코드들이랑 거의 비슷하게 작성했는데, 쿼리문 문제인지, 머스타치파일에서 뭘 잘못한 건지...

계속 안되니까 미치겠더라 엉엉

이거 하나 때문에 공부 진도도 못 나가고 해서 아쉽지만 게시글 정렬로 위안 삼았다

정렬에 대해서 구글링 해보니까, 게시글 정렬만 하는 게 아니라 페이징 처리도 세트로 함께 하는 거 같더라

일단은 여기까지 해보고 페이징이랑 정렬은 나중에 다시 해봐야겠다