[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
      • 프로젝트
      • 생각정리
  • 태그

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

티스토리툴바