자바 스프링 (페이징 하기)

Y·2021년 5월 21일
0

자바스프링(부트X)

목록 보기
13/14
post-thumbnail

그림과 같이 8개씩 페이징을 할 생각이다

서비스 단에서 보낸 boardList를 받아 forEach 반복문으로

div를 연속해서 출력해준다



컨트롤 단입니다.

@RequestParam() : value = "pageNum"

required = false : default값은 true로 무조건 값을 받아와야 하는 속성인데 값을 만약

못받아오면 에러를 발생시킨다.

반드시 false 로 설정을 두어야 받아오는 요청값이 없어도 에러를 발생시키지 않습니다 페이지는 무조건 1페이지이니

dafalutValue 값을 1로 설정해둡니다





페이징 들어갑니다

페이징 전략은 대충 이렇습니다

위의 사진은 DB에 저장된 게싯글만큼 페이지를 구하는 메소드입니다

반환은 ArrayList로 구해진 페이지 길이 만큼 더해줍니다 ex>(3페이지면)

{1,2,3}이런식 입니다

페이징 서비스 단 입니다.(pageNum = 클라이언트단의 페이지가 몇번째 인지)

받는 매게변수입니다

CountBoard는 select count 문으로 입니다






onePageBoardCount : 한페이지에 몇개의 게싯글을 올릴지 정해놓은것입니다.

위의 메모장처럼의 로직입니다

주의! mapper 매핑후의 dao에서 두개의값을 전달하려 할때는

반드시 @Param 어노테이션을 사용해야합니다

그림과 같이 설정해야 값이 전달됩니다 이거 몰라서 1시간동안 찾았습니다;;

select B.* from(select rownum rn, A.* from(select * from board_in order by board_id desc)A)B 
		 where rn between #{startBoardNum} and #{endBoardNum}

위의 코드는 페이징을 위한 rownum을 이용한 오라클 sql 문법입니다

rownum rn 설정

A => rownum, 내림차순으로 정렬된 개시글을 정렬후 select하고

B => rownum에 따른 내림차순 완료된 게싯글을 1~8까지만 딱 select해주는 문법입니다

profile
스스로 공부하고 기록해서 발전할수 있도록 노력하는 공부 벨로그 https://youseong.me

0개의 댓글