쇼핑몰 목록 페이징을 서버사이드로 표준화하고 조건 변경 시 페이지 리셋
목차
feat: 쇼핑몰 플랫폼 UI 개선 및 페이징 기능 추가
서버사이드 페이징을 표준화하는 작업이었음. 여러 목록 페이지가 각자 다른 방식으로 페이징을 구현하고 있어서 통일함.
MyBatis 쿼리 패턴
<select id="selectList">
SELECT * FROM product
WHERE status = 'ACTIVE'
<if test="keyword != null">
AND product_nm LIKE CONCAT('%', #{keyword}, '%')
</if>
ORDER BY created_at DESC
LIMIT #{size} OFFSET #{offset}
</select>
페이징 UI 컴포넌트
| 요소 | 처리 |
|---|---|
| 이전/다음 버튼 | 첫/마지막 페이지에서 비활성화 |
| 페이지 번호 | 현재 페이지 ±2 범위 표시 |
| 총 건수 | 결과 상단 표시 |
카테고리/검색 조건 변경 시 page=1 리셋 처리가 빠지는 실수가 많음. 변경 이벤트 핸들러에서 page 파라미터를 1로 초기화하도록 공통화함.
개발 원칙 정리
이 작업을 진행하면서 재확인한 원칙들:
작은 커밋: 변경 단위를 작게 유지해서 코드 리뷰와 롤백이 쉽게.
테스트 먼저: 변경 전 현재 동작을 파악하고, 변경 후 동일하게 동작하는지 확인.
문서 동기화: 코드가 바뀌면 관련 주석과 문서도 같이 업데이트.
| 원칙 | 이유 |
|---|---|
| 단일 책임 | 하나의 함수/클래스는 하나의 역할만 |
| 명시적 코드 | 영리한 코드보다 읽기 쉬운 코드 |
| 실패 우선 처리 | happy path보다 에러 케이스 먼저 설계 |
끝
댓글 0
첫 댓글 달아줘.