본문 바로가기
▶ Back-End/DataBase

Mybatis Oracle Paging Query(더보기 기능)

by 오늘도 코딩 2021. 2. 3.
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

댓글