까먹기 전에 언능 기록해야지
코드들은 현재 공부 중인 프로젝트에서 가져왔음
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게시글에도 노출이 되는 문제가 발생했다
한 이틀 정도 이거에만 시간을 썼는데, 끝내 해결을 못함 ㅜㅜ
게시글 테이블과 댓글 테이블을 연결시킨 다음에, 레파지토리에 쿼리문을 작성하고 나머지는 위에 코드들이랑 거의 비슷하게 작성했는데, 쿼리문 문제인지, 머스타치파일에서 뭘 잘못한 건지...
계속 안되니까 미치겠더라 엉엉
이거 하나 때문에 공부 진도도 못 나가고 해서 아쉽지만 게시글 정렬로 위안 삼았다
정렬에 대해서 구글링 해보니까, 게시글 정렬만 하는 게 아니라 페이징 처리도 세트로 함께 하는 거 같더라
일단은 여기까지 해보고 페이징이랑 정렬은 나중에 다시 해봐야겠다
'Spring Boot' 카테고리의 다른 글
스프링부트 검색, 페이징처리 하기 Pageable (0) | 2020.09.22 |
---|---|
스프링부트에서 REST API 테스트코드 작성하기 (0) | 2020.09.14 |
[스프링부트 JPA] 연관관계 매핑 (0) | 2020.09.06 |
자바 빌더 패턴에 대해서 + @Builder (1) | 2020.08.25 |
JPA - Hibernate - Spring Data JPA 차이점 (0) | 2020.08.24 |