ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 04 게시판 목록 만들기와 페이징-TDD(2)
    Spring/03 MyBatis로 게시판 만들기 2023. 7. 14. 18:38
    반응형

    게시판 목록 만들기와 페이징-TDD(2)

    게시판 목록 만들기

    - 이전 02 MyBatisDAO작성하기의 실습에서

       BoardDao.javaBoardDto,BoardDaoImpl.java를 만들었다

    - @Repository계층을 만듬

    - 다음 과정은 @Service계층 만들 것이다

     

     

    BoardDao.java (참고)

     

    BoardDaoImplTest.java(게시판 board DB에 데이터 값을 넣었다)

     

     

    1) @Service 만들기 실습

    BoardServiceImpl.java( com.fastcampus.ch4/service/BoardServiceImpl.java생성)

    @AutowiredBoardDao를 주입

    BoardDao.java의 메서드를 호출할 수 있도록 작성하였다

    대부분의 메서드는 생략하였다(화면 공간을 다 채워서 보여주기 어려움)

    getPage( )메서드는 페이지 처리에 사용될 것이다 (아래 boardMapper.xml에서 확인)

    throws Exception 사용한 이유는 Tx로 처리할 메서드가 없기 때문이다

         controller에서 처리할 예정

     

     

     

    boardMapper.xml ( getPage( )id="selectPage"를 호출)

    >> #{offset}#{pageSize}2개의 값을 받기위해 map으로 담는다

         map에는 (“offset”, offset), (“pageSize”, pageSize) 담겨있다

    >> LIMIT {OFFSET} {LIMIT}

         {OFFSET}은 어디서부터 가져올것인가? {LIMIT}은 가져올 게시물의 수

     

     

     

    2) controller 만들기 실습

    BoardController.java

     

    boardList.jsp

     

     

    결과 확인(톰캣 실행)

    오류

    예외

    org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: Optional int parameter 'page' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.

    >> 컨트롤러의 int page값이 null로 입력되어서 발생

    >> url창에 직접 pagepageSize 값을 넣어주면 화면이 출력된다

     

     

    BoardController.java(수정)

    >> int page Integer page, Integer pageSize로 변경(디폴트가 0으로 입력)

    >> request.param으로 디폴트 값으로 줄 수도 있다

         객체로 받을때는 Integer

     

     

    결과 확인

    >> DB데이터가 조회 되지 않는다

    >> URL링크에 값이 디폴트 값이 없기 때문이다

     

     

     

    BoardController.java(수정)

     

     

    결과 확인

     

     

     

    3) 게시판 PageHandler 만들기

    BoardController.java(추가)

     

     

     

    boardList.jsp(테이블 부분만 가져옴)

     

     

    결과 확인

    >> 출력은 되었지만 '<' 버튼이 동작을 안하다

     

     

     

    PageHandlerTest.java

    >> 결과는 실패했고 현재 페이지(page=10)

         10에 있는데 출력된 값은  11 12 13 15 16 17 18 19 20 이다 beginPage 값의 오류

     

     

    PageHandlerTest.java(수정한 부분만 가져옴)

    >> 이전 beginPage = page/ naviSize * naviSize + 1;로 실행했을 때

          page10의 값을 넣어 주면

          beginPage = 10 / 10 * 10 +1

          beginPage = 1*10+1

          beginPage = 11 나오게 된다 따라서 page 값에 -1을 넣어준다 (page-1)

     

     

    결과 확인

    >> 이상 없이 동작한다

     

     

     

    반응형
Designed by Tistory.