java, spring

[Spring] MyBatis와 스프링에서 페이징 처리

isaac.kim 2021. 7. 14. 23:41
728x90
반응형

[Spring] MyBatis와 스프링에서 페이징 처리

 

광고 한 번의 클릭은 개발자에게 매우 큰 도움이 됩니다!

 

 

이전 글

2021.07.11 - [Spring] - Spring 조회 페이지에서 <form> 처리

2021.07.11 - [Spring] - [Spring] 게시물의 수정/삭제 처리

2021.07.11 - [Spring] - Spring 게시물 조회 페이지 처리 / 히스토리 조작(history.replaceState( ) )

2021.07.10 - [Spring] - Spring 데이터 등록 후의 피드백 (addFlashAttribute( ), HttpSession)

2021.07.10 - [Spring] - [Spring] 한글 등록을 위한 필터 설정 (Spring MVC 한글 필터 설정)

2021.07.10 - [Spring] - [Spring] 등록 입력 페이지와 등록 처리

2021.07.06 - [Spring] - JSTL forEach문법,

2021.07.06 - [Spring] - [Spring] JSTL로 list item 출력하기 / table 전체 목록 출력하기 /

2021.07.06 - [Spring] - [Spring] JSP 파일에 JSTL 태그를 사용하기 위한 태그 라이브러리 추가하기

2021.07.06 - [Spring] - [Spring] jsp의 include 사용법

2021.07.06 - [Spring] - [Spring] 스프링 jsp 페이지, ViewResolver, ResourceHandler

 

반응형

 

 

페이징 처리를 위해서 필요한 파라미터는 1) 페이지 번호(pageNum), 2) 한 페이지당 몇 개의 데이터(amount)를 보여줄 것인지가 결정되어야 합니다. 

 

com.project.domain 패키지에 Criteria 클래스 생성합니다. Criteria는 '검색의 기준'을 의미합니다.

 

Criteria 클래스의 용도는 pageNum과 amount 값을 같이 전달하는 용도지만 생성자를 통해서 기본값을 1페이지, 10개로 지정해서 처리합니다. Lombok을 이용해서 getter/setter을 생성해 줍니다.

 

com.project.mapper 패키지의 BoardMapper 인터페이스에 getListWithPaging( ) 메서드를 생성합니다.

 

기존에 만들어둔 src/main/resources의 BoardMapper.xml에 getListWithPaging에 해당하는 태그를 추가합니다.

 

#{ } 파라미터를 적용하는 방법을 사용하기 전에 먼저 작성한 SQL 문이 제대로 동작하는지 확인합니다.

첫 페이지 10개의 글이 출력되도록 합니다.

 

src/test/java 폴더 아래 com.project.mapper 패키지 아래 BoardMapperTests 클래스에서 테스트 메서드를 작성합니다.

 

JUnit으로 실행한 결과 다음과 같이 조회된 것을 확인할 수 있습니다. 

 

실제 데이터베이스 테이블에서 최신 글 10개를 불러오는 것인지 확인합니다.

 

JUnit 테스트 결과와 실제 데이터베이스 테이블의 데이터가 일치하는 것을 확인할 수 있습니다.

확인이 되었으면, #{파라미터}를 활용한 페이징 처리를 하는 SQL 문으로 수정합니다.

 

위와 같이 작성한 뒤,

 

테스트 클래스와 메서드에서 pageNum을 2로 즉, 2 페이지의 데이터를 불러오도록 세팅하여 테스트합니다.

 

처음 쿼리 테스트 결과로 1 페이지의 seq_bno가 791이 가장 최신 데이터를 출력하는 것을 확인했습니다.

 

2 페이지로 조회하니 781부터 10개의 데이터가 출력되어야겠죠. (781~772)

 

결과를 확인하니 위에서 작성한 쿼리로 페이징 처리가 가능하다는 것을 확인할 수 있습니다.

 


오늘은 MyBatis와 스프링에서 페이징 처리하는 방벙에 대해 알아보았습니다.

 

 

도움이 되셨다면 광고 한 번 클릭 부탁드립니다. 한 번의 클릭이 제게 큰 힘이 된답니다!^^

 

728x90
반응형