Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/9월

22.09.02 - [ Mybatis ] 게시글 - { 작성, 전체조회, 페이징처리 } 작업

giggs 2022. 9. 7. 11:23

 

1. 게시글 작성 작업

 

 

 

                         # 공장세운상태에서는 계획만 잘 세워도 생산성 급격히 좋아진다.#

 

 

 

 

 


 

 

 

0. 테이블 만들기

 

 


 

 

 

1. SQL 문 작성하기

 

 


 

 

2. java코드 작성

  • Controller – Service – DAO

 

 

 


 

 

3. mapper 작업

  • 도메인 별로 xml파일 분리하는 것이 좋다.
  • 협업할 때 내가 만져도 에러 안나고, 유지보수 측면에서도 좋다.

 

 


 

  • config.xml파일에서도 mapper

 

 

 


 

 

4. 게시글 입력 화면 만들어주기

 

 

 

 

 

 

게시글 입력 작업 완료!

 

 

 

 


 

 

 

 

2. 게시글 전체 목록 조회 작업

 

 

1. 테이블 준비되어있다.

 

2. SQL 작성 (board-mapper.xml 에서 작업)

 

3. java 작업 ( 컨트롤러,서비스.dao )

 

4. 화면에서 조회한 게시글 보여주기

 

 

 

목록 조회 작업 완료

 

 

 

 

 


 

 

 

 

 

3. 페이징 처리 작업

 

 

3-1 : pageVo 클래스 생성

 

 

필드 바탕으로 - 게터세터/toString/생성자 만들어주기

 

 

 

 


 

 

 

3-2 : pageVo 생성에 필요한 애들(maxPage, startPage, endPage) 계산하기

  • 현재 분리전으로 - 컨트롤러에서 작업 진행
  • 저번에 세팅했던 내용 복사 붙여넣기로 진행

 

 

 

 


 

 

 

 

3-3 : pageVo 생성하는 작업 분리하기

  • 생각해보니 페이징처리는 이 게시판에서만 사용하는 것이 아니라 다른 곳에서도 사용한다.
  • 컨트롤러가 아닌 새로운 클래스 생성해서 작업
  • 이 int 4가지[ listCount , currentPage, pageLimit, boardLimit ] 를 가지고 pageVo를 만드는 것이 목적이다.
  • 이 int 4가지를 파라미터로 전달해주면 - 그에 맞는 계산을 통해 pageVo객체를 리턴하는 메서드를 만들어주자.
  • 공통영역으로 빼가지고 간소화 시켜보자.

 

 

maxPage , startPage, endPage 계산하는 부분을 공통영역으로 분리해서 작업

 

 

 

# 클래스 만들고 pageVo 얻어오는 메서드 만들기 ( 4개파라미터 받아서 만든다 ) #

 

 

 

 


 

 

 

 

 


 

 

 

 

3-4 : getPageVo() 메서드 호출하기 

  • 4개의 파라미터를 전달해주어서 메서드를 호출하면, 해당 게시글에 맞는 pageVo 객체 얻어올 수 있다.
  • 4개의 파라미터 중 listCount 는 "페이징처리할 게시글 총 수"를 구하는 작업이 필요하다.

 

 

 

# 게시글 전체 페이지 = listCount 가져오는 서비스 작업 해주기

 

 

 


 

게시글 목록 개수 조회하는 작업 진행~ C  S - D

 

 

 

 

# resultType = "_int" #

Mybatis에서 이미 별칭만들어준거 사용

 

 

 

 


 

 

# 이제 getPageVo() 메서드를 호출하면   pageVo 객체 얻어올 수 있다! #

 

 

분리한 메서드 호출하기

 

 

 

 


 

 

 

 

 

3-5. pvo 객체 활용해서 RowBounds 객체 만들기 

  • dao레이어에서 작업
  • rownum같은 between같은 처리 안해주어도
  • mybatis 는 페이징 처리도 알아서 해준다.!
  • 다만, offset과 limit 을 가지고있는 RowBounds 객체를 전달해주어야 한다.

 

 

 

게시글 조회하는 작업 메서드에 pvo객체도 파라미터로 전달!

 


 

# offset limit  #

2개만 전달하면 페이징 처리가 되는데 

따로따로 하면안되고 , 어떤 객체 형태로 전달하여야한다

 

RowBounds 객체 형태로 offset / limit 전달 하여야한다.

 

 

 

 

계산해서 대입해주면 된다.

 


 

 

pageVo를 이용하여 offset / limit 계산하기

 

offset = currentPage -1 * boardLimit

limit = boardLimit

 

 

 

 


 

 

3번째 파라미터로 전달해주어야한다!

 

 

 

 

쿼리문에서는 따로 추가할 작업 없다.

이러면 백엔드 작업 완료!

화면쪽에서 작업해주기

 

 

 

 


 

 

 

3-6 : 페이징 동적으로 만들어주기 - 화면 작업

 

 

 

 

 

 

페이징 작업 끝!