게시글의 제목이나 내용, 작성자의 닉네임으로 게시글을 검색해보자.

현재 페이징이 적용되어 있기 때문에 기존의 코드에서 약간 수정이 필요하다. (페이징 참조)

**검색 조건(type)**과 **검색어(query)**를 쿼리 파라미터로 받아오기 때문에 Pageable 인터페이스를 파라미터로 받지 않고 페이징, 검색에 필요한 필드를 가지는 Dto 를 통해 한번에 받아오고자 한다.

요청 URL

Dto


페이징 처리에 필요한 page size 필드와 검색에 사용할 type query 필드를 선언해주었다.

이후 repository.findXXX(Pageable) 메서드에 필요한 Pageable 인터페이스를 위해 getPageable() 메서드를 추가하였다. (메서드 참고)

PageRequestDto

public class PageRequestDto {

    private int page = 0; //기본 페이지 0
    private int size = 10; //기본 사이즈 10
    private SearchType type;
    private String query = "";

    public Pageable getPageable(Sort sort) {
        return PageRequest.of(page, size, sort);
    }
}

SearchType

public enum SearchType {
    T("제목"), TC("제목 + 내용"), W("작성자");

    private String description;

    SearchType(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }
}