게시판에 들어가는 기능 중 특정 기준으로 정렬하는 기능이 필요할 때가 있습니다. 이번 글에서는 정렬하는 방법을 살펴보겠습니다.
정렬에는 여러가지 기준이 필요합니다.
최신순, 오래된순 기타등등... 이러한 정보들을 enum으로 관리해줍니다.
저는 class 안에 enum 타입을 넣어놨습니다.
한 클래스에 비슷한 기능을 하는 객체를 묶어놨습니다.

엔티티안에 다음처럼 선언하여 enum 타입을 저장할 수 있습니다.

그러면 다음처럼 데이터베이스에서도 enum을 사용할 수 있습니다.

컨트롤러에는 다음처럼 model에 값을 넘겨줍니다
values() 에는 INSPECTION, UPDATE 등등 값들이 넘어가고
selectedCategory 에는 사용자가 선택한 정렬기준을 보여주고 정렬기준을 유지한 채 페이징하기위한 값이 넘어갑니다.

사용자가 선택한 정렬기준을 hidden selected으로 보여지지만 선택할 수 없게 했고 values() 들을 each를 사용해서 값들이 보이게끔 하였습니다.


드롭박스에 보이는 오류수정은 selectedCategory에 의해 보이는 값 입니다

드롭박스를 누르면 값들이 보이는데 이는 values()에 의한 값들 입니다.

정렬과 페이징을 동시에 적용하기 위해 카테고리를 쿼리 파라미터로 넘겨주게 됩니다.
카테고리는 선택사항이고 필수값이 아니게 지정하면 값이 없어도 정상작동 합니다

정보를 가져올때는 아래처럼 쿼리 메소드를 활용하여 정렬된 데이터를 페이징하여 가져옵니다.

JpaRepository는 ListPagingAndSortingRepository를 구현한 것이기 때문에 Pageable을 사용할 수 있습니다.

정렬 기준에 맞는 데이터만 페이징해서 가져오기 때문에 페이지번호가 1, 2번 밖에 없는것을 확인 할 수 있습니다.
