페이징 처리를 위해서는 SQL을 실행할때 몇가지 파라미터가 필요하다는점이다.
페이징 처리를 위해서 필요한 파라미터는 1)페이지번호(pageNum) , 2) 한페이지당 몇개의 데이터(amount)를 보여줄지
페이지 번호와 몇개의 데이터가 필요한지 별도의 파라미터로 전달해도 되지만,
아예 이 데이터를 하나의 객체로 묶어서 전달하는 방식이 확정성이 더좋다.
org.zerock.domain 패키지에 Criteria 클래스 작성.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package org.zerock.domain;
import lombok.Data;
@Data
public class Criteria {
private int pageNum; //페이지 번호
private int amount; //페이지 출력개수
public Criteria() {
this(1,10);
}
public Criteria(int pageNum, int amount) {
this.pageNum = pageNum;
this.amount = amount;
}
}
|
cs |
위 클래스의 용도는 pageNum과 amount 값을 전달하는 용도지만 ,
생성자를 통해 기본값을 1페이지 ,10개로 지정해서 처리.
1
|
public List<BoardVO> getListWithPagin(Criteria cri);
|
cs |
Mapper 인터페이스에 페이징처리된 리스르 메소드를 선언후.
mapper.xml을 수정해야하는데, 전에 작성했던 SQL은 < , >= 등 부등호를 xml에서 사용할수 없기때문에,
CDATA 태그를 추가해줌.
1
2
3
4
5
6
|
<select id="getListWithPaging" resultType="org.zerock.domain.BoardVO">
<![CDATA[
select bno,title,content from (select /*+INDEX_DESC(tbl_board pk_board) */
rownum rn, bno, title, content from tbl_board where rownum <= #{pageNum} * #{amount}) where rn > (#{pageNum} -1) * #{amount}
]]>
</select>
|
cs |
13.2 BoardController와 BoardService 수정
1
|
public List<BoardVO> getList(Criteria cri);
|
cs |
Criteria를 파라미터로 처리하도록 인터페이스 , ServiceImpl 클래스 수정.
1
2
3
4
5
|
@GetMapping("/list")
public void list(Criteria cri, Model model) {
log.info("컨트롤러 list + cri ");
model.addAttribute("list", service.getList(cri));
}
|
cs |
Criteria 클래스를 하나 만들어두면 위와 같이 편하게 하나의 타입만으로 파라미터나 리턴타입을 사용할수 있다.
'읽은 책 정리 > 코드로 배우는 스프링 웹 프로젝트' 카테고리의 다른 글
[Spring] 16 REST 방식으로 전환 (0) | 2020.12.23 |
---|---|
[Spring] 14 페이징 화면처리 (0) | 2020.12.21 |
[Spring] 오라클 데이터 베이스 페이징처리 (0) | 2020.12.20 |
[Spring] 프레젠테이션(웹)계층의 CRUD구현 (0) | 2020.12.17 |
[Spring] 스프링의 MVC의 Controller (0) | 2020.12.15 |