-
04 게시판 목록 만들기와 페이징-TDD(2)Spring/03 MyBatis로 게시판 만들기 2023. 7. 14. 18:38반응형
게시판 목록 만들기와 페이징-TDD(2)
게시판 목록 만들기
- 이전 『02 MyBatis로 DAO작성하기』의 실습에서
BoardDao.java와 BoardDto,BoardDaoImpl.java를 만들었다
- @Repository계층을 만듬
- 다음 과정은 @Service계층 만들 것이다
BoardDao.java (참고)
BoardDaoImplTest.java(게시판 board DB에 데이터 값을 넣었다)
1) @Service 만들기 실습
BoardServiceImpl.java( com.fastcampus.ch4/service/BoardServiceImpl.java생성)
① @Autowired로 BoardDao를 주입
② 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창에 직접 page와 pageSize 값을 넣어주면 화면이 출력된다
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;로 실행했을 때
page의 10의 값을 넣어 주면
beginPage = 10 / 10 * 10 +1
beginPage = 1*10+1
beginPage = 11 나오게 된다 따라서 page 값에 -1을 넣어준다 (page-1)
결과 확인
>> 이상 없이 동작한다
반응형'Spring > 03 MyBatis로 게시판 만들기' 카테고리의 다른 글
06 게시판 읽기, 쓰기, 삭제, 수정 기능 구현(2) (0) 2023.07.18 05 게시판 읽기, 쓰기, 삭제, 수정 기능 구현(1) (0) 2023.07.16 03 게시판 목록 만들기와 페이징-TDD(1) (1) 2023.07.13 02 MyBatis로 DAO작성하기 (0) 2023.07.11 01 MyBatis의 소개와 설정 (0) 2023.07.10