[Spring] paging

2024. 9. 6. 02:19·Back-End/Back-End

[작성일: 2023. 04. 30]

 

 

2024.08.24 - [WEB/Back-End] - [Spring] 게시판(Board) 만들기

 

[Spring] 게시판(Board) 만들기

[작성일: 2023. 04. 23] 게시판(Board) 만들기게시판 메인 테이블 생성각 row(게시물)마다 달라져야 하는 번호가 key가 되어야 하며, 이를 채번하는 2가지 방법이 있음.가장 큰 번호를 찾아 +1 하기단점 :

eenzhd.tistory.com

 

 

paging

  • 게시글, 내용 등의 개수가 일정 개수를 넘어가는 경우 전체를 가져와서 화면에 보여주는 것은 비효율 적임.
  • 한 페이지에서 보여줄 게시글의 개수를 정하고 그 중 몇 페이지가 현재 페이지인지를 결정하는 방식이 필요함.

 

 

 

 

paging 처리 단계

Criteria 생성

  • 한 페이지에 보여줄 글의 개수, 몇 번째 페이지인지를 포함하는 클래스 생성
  • pageNum, amount, limit, offset
  • 생성자 생성(2개)
import org.springframework.stereotype.Component;

import lombok.Data;

@Component   
@Data    // getter, setter 관리
public class Criteria {  // 게시글 검색의 기준
	private int pageNum;   // 현재 몇 번째 페이지인가
	private int amount;  	// 한 페이지에 보여질 게시글의 수
	
	public Criteria() {
		this(1, 10);
//		pageNum = 1;
//		amount = 10;
	}
	
	public Criteria(int pageNum, int amount) {
		this.pageNum = pageNum;
		this.amount = amount;
	}
}

 

 

 

BoardMapper.xml

  • getListwithPaging인 SQL을 작성
  • getList와 거의 유사하나 where 조건에 페이징 처리가 들어감.
<select id="getListWithPaging" resultType="boardVO">
    <![CDATA[ 
    SELECT * FROM TBL_BOARD a 
    WHERE BNO > 0
    ORDER BY BNO DESC
    LIMIT #{amount} OFFSET #{pageNum-1}
    ]]>
</select>

 

 

 

BoardMapper.java

  • getListWithPaging 메서드 생성
// 게시글 목록(페이징 처리)
public List<BoardVO> getListWithPaging(Criteria cri);

 

 

 

BoardMapperTest.java

  • testGetListWithPaging()으로 JUnit Test 실행
@Test
public void testGetListWithPaging() {
    Criteria cri = new Criteria();

    cri.setAmount(5);
    cri.setPageNum(0);

    List<BoardVO> list = mapper.getListWithPaging(cri);
    list.forEach(board -> log.info("---------------------" + board.getBno()+""));
}

 

 

 

BoardDAO

  • 전체 글 불러오는 것에서 페이징 처리 글 불러올 수 있도록 getList(Criteria cri) 추가
// 전체 게시글 가져오기(페이징 처리)
public List<BoardVO> getList(Criteria cri) {
    return mapper.getListWithPaging(cri);
}

 

 

 

BoardService.java

  • 신규로 getList(Criteria cri) 추가
@Service
public interface BoardService {
	public void register(BoardVO board);
	public BoardVO get(Long bno);
	public boolean modify(BoardVO board);
	public boolean remove(Long bno);
	public List<BoardVO> getList();
	public List<BoardVO> getList(Criteria cri);
}

 

 

 

BoardSeriviceImp.java

  • getList(Criteria cri) 구현
@Override
public List<BoardVO> getList(Criteria cri){
    return boardDAO.getList(cri);
};

 

 

 

BoardController.java

  • list() 수정
@GetMapping("list")
public void list(Criteria cri, Model model) {
    log.info("----------------------------");
    log.info("[BoardController] list() : ");
    log.info("----------------------------");
    model.addAttribute("list", service.getList(cri));

 

 

 

DAO Test, Service Test 수행

 

Controller Test(MockUp) 수행

 

 

 

 

 

현재 페이지 + 이전 이후 페이지들 관리를 위한 pageDTO

pageDTO class 생성

 

startPage, endPage, realEnd 계산 로직

 

list.html

  • pageDTO를 보여줄 div 생성

 

a link 생성

  • th:if, th:unless를 이용하여 현 게시판에는 link가 없도록 조치

 

javascript

  • 링크 클릭 시 데이터를 넣고 서비스 호출
  • preventDefault 함수를 이용하여 a 본연의 기능 제거

 

 

 

 

 

현재 페이지 기억 기능

  • get 또는 modify 후 원래 조회하던 리스트 페이지 저장
  • Criteria에 URI 저장 메서드 생성
  • get, modify에 cri가 포함되어 전송되도록 코드 수정

 

 

 

 

 

 

 

 

 

 


🐣 해당 게시글은 입문 개발자가 요약/정리한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.

 

저작자표시 비영리 변경금지 (새창열림)
'Back-End/Back-End' 카테고리의 다른 글
  • [Spring] 검색처리
  • [Spring] 전체 건수 반영하기
  • [Spring] 프레젠테이션 계층의 구현과 테스트
  • [Spring] 서비스(Service)
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    DB
    jsp
    html
    최주호
    HTTP
    다형성
    자바스크립트
    게시판만들기
    프로그래머스
    javascript
    의존성주입
    데이터베이스
    Swift
    알고리즘
    JPA
    Spring Security
    스프링
    자바
    Database
    김영한
    객체
    성능최적화
    변수
    생성자
    백준
    spring
    MVC
    sql
    Java
    Security
  • hELLO· Designed By정상우.v4.10.0
뚜비
[Spring] paging
상단으로

티스토리툴바