반응형

저번에는 페이징기능에 대해서 알아보았다 .

 

이번에는 간단한 검색기능을 알아보려고한다. 

 

검색이라는 걸 검색했는데 데이터가 없다 .

 

우선 인터페이스인 BoardRepository를 추가해야 된다. 

 

Page<Board> findByTitleContaining(String searchKeyword, Pageable pageable);

이렇게 추가해준다. 

 

searchKeyword는 검색어를 pageable는 페이징에대한 정보를 받는다. 

 

그다음 컨트롤러에 추가해주자

 

 

    @GetMapping("/board/list")
    public String boardList(Model model,
                            @PageableDefault(page = 0, size = 10, sort = "id", direction = Sort.Direction.DESC) Pageable pageable,
                            String searchKeyword) {

        Page<Board> list = null;

        if(searchKeyword == null) {
            list = boardService.boardList(pageable);
        }else {
            list = boardService.boardSearchList(searchKeyword, pageable);
        }

        int nowPage = list.getPageable().getPageNumber() + 1;
        int startPage = Math.max(nowPage - 4, 1);
        int endPage = Math.min(nowPage + 5, list.getTotalPages());

        model.addAttribute("list", list);
        model.addAttribute("nowPage", nowPage);
        model.addAttribute("startPage", startPage);
        model.addAttribute("endPage", endPage);

        return "boardlist";
    
    }

우선 Page<T> 제네릭으로 Board를 해주고  null을 표현해준다.

다음에 if문으로 검색어가 오지 않았을때 페이징처리만해주고 

검색어가 왔을 경우 검색어 + 페이징처리를 해준다. 

 

<th:block th:each="page : ${#numbers.sequence(startPage, endPage)}">
    <a th:if="${page != nowPage}" th:href="@{/board/list(page = ${page - 1}, searchKeyword = ${param.searchKeyword})}" th:text="${page}"></a>
    <strong th:if="${page == nowPage}" th:text="${page}" style="color : red"></strong>
</th:block>
<form th:action="@{/board/list}" method="get">
    <input type="text" name="searchKeyword">
    <button type="submit">검색</button>
</form>

 

 

 

${param.name} 
으로 받을수 있다.

param 은 파라미터값으로 넘어온 데이터를 뜻하고
name 은 그 데이터중 name이라는 이름을 갖는 데이터의 값을 가져오겠다는 뜻이다.

뷰를 보면 form태그를 통해 검색어를 컨트롤러에 태운다.

그다음에 searchKeyword로 ${param}으로 잡아서 넣어준다. 

 

이렇게 CRUD + 페이징 + 검색까지 기본적인 공부는 끝난거같다.

다음에는 JS를 공부하고 리엑트를 공부해서 

 

스프링부트 + 리엑트 프로젝트를 해보자

 

https://github.com/MoonSeokHyun

 

MoonSeokHyun - Overview

http://mls0000.dothome.co.kr/. MoonSeokHyun has 14 repositories available. Follow their code on GitHub.

github.com

 

반응형

+ Recent posts