728x90
반응형
"더보기" 기능을 위해 페이징을 하는 경우 이와 같이 사용한다.
▷ 조회 범위 계산
- exampleServiceImpl.java
- String 타입으로 요청받은 조회 건수(getNbrViews)와 페이지 번호(getPageNbr)로 조회 범위를 계산
- nbrViews 와 pageNbr를 DAO에 파라미터로 요청 (서비스 로직 생략)
int nbrViews = Integer.parseInt(getNbrViews); // 조회 건수
int pageNbr = (nbrViews * (Integer.parseInt(getPageNbr) - 1)) + 1; // 페이지번호
▷ Example
- exampleDAO_SQL.xml
- Oracle에는 LIMIT 함수가 없다 따라서 ROWNUM을 이용해 동일한 결과를 추출
- 서브쿼리는 시간순으로 정렬한 후 행에 순번을 매기기 위해 사용
- 순번이 매겨진 전체 행에 RECORD_NUM부터 ROWNUM 건을 조회
<select id="examplePaging" parameterType="ExampleDTO" resultType="ExampleDTO">
SELECT
*
FROM (
SELECT
[COLUMN],
[COLUMN],
ROWNUM AS RECORD_NUM
FROM
EXAMPLE_TABLE
WHERE
[COLUMN] = [조건]
<!-- 시간순으로 내림차순 정렬 -->
ORDER BY REGIST_DTM DESC
)
WHERE
<!-- RECORD_NUM : 조회 시작 번호, ROWNUM : 조회 건수 -->
<![CDATA[ RECORD_NUM >= #{pageNbr} AND ROWNUM <= #{nbrViews} ]]>
</select>
728x90
728x90
'▶ Back-End > DataBase' 카테고리의 다른 글
Cassandra Snapshot Backup And Restore 방법 (2) | 2023.10.04 |
---|---|
MySql ON DUPLICATE KEY UPDATE 구문 (0) | 2023.08.02 |
Mybatis Oracle BEGIN-END(PL/SQL) (0) | 2021.02.04 |
Mybatis foreach문(반복문/동적 SQL) (0) | 2021.02.04 |
Mybatis Oracle MERGE INTO 구문 (0) | 2021.01.29 |
댓글