오라클 10버전 페이징 처리
- 작성자 :
- 게*물
- 작성일 :
- 2020-06-11 16:11:56
- 조회수 :
- 2,692
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
오라클 10버전 사용중인데 limit이랑 ofset이 지원이 안되서 rownum을 이용하여 페이징을 하고있는데 게시글을 등록하면 페이징 중간에
들어가거나 맨앞으로가야하는데 맨뒤로 가거나 정렬이 잘 되지 않습니다 ㅠㅠ.. 전자정부 템플릿 오라클 참고하면서 하고있는데 잘 안되네요..
뭐가 문제인지 한번 봐주시면 안될까요?
<select id="selectBoardList" parameterType="searchVO" resultType="egovMap">
SELECT * FROM ( SELECT ROWNUM AS
rnum, ID, NAME, DESCRIPTION, HITCOUNTER , TO_CHAR(DATETIME, 'YYYY-MM-DD') as DATETIME
FROM BOARD
<if test="searchKeyword != null and searchKeyword != ''">
<choose>
<when test="searchCondition == 0">
AND DESCRIPTION LIKE '%' || #{searchKeyword} || '%'
</when>
<when test="searchCondition == 1">
AND NAME LIKE '%' || #{searchKeyword} || '%'
</when>
</choose>
</if>
ORDER BY ID ASC
)WHERE rnum BETWEEN #{firstIndex} AND #{firstIndex} + #{recordCountPerPage}
</select>
들어가거나 맨앞으로가야하는데 맨뒤로 가거나 정렬이 잘 되지 않습니다 ㅠㅠ.. 전자정부 템플릿 오라클 참고하면서 하고있는데 잘 안되네요..
뭐가 문제인지 한번 봐주시면 안될까요?
<select id="selectBoardList" parameterType="searchVO" resultType="egovMap">
SELECT * FROM ( SELECT ROWNUM AS
rnum, ID, NAME, DESCRIPTION, HITCOUNTER , TO_CHAR(DATETIME, 'YYYY-MM-DD') as DATETIME
FROM BOARD
<if test="searchKeyword != null and searchKeyword != ''">
<choose>
<when test="searchCondition == 0">
AND DESCRIPTION LIKE '%' || #{searchKeyword} || '%'
</when>
<when test="searchCondition == 1">
AND NAME LIKE '%' || #{searchKeyword} || '%'
</when>
</choose>
</if>
ORDER BY ID ASC
)WHERE rnum BETWEEN #{firstIndex} AND #{firstIndex} + #{recordCountPerPage}
</select>
A
안녕하세요.
표준프레임워크센터입니다.
페이지번호와 정렬을 함께 사용하면 정렬이 이루어지기 전에 페이지번호가 붙어서 원하는대로 정렬이 되지 않습니다.
따라서 조회 시 정렬이 이루어지게 하고 이후 페이지번호를 붙여야 합니다.
이후 페이징 처리는 위의 쿼리를 한번 더 감싼 형태로 구성한 후 페이지번호 구간으로 조회하는 쿼리를 구성하시면 됩니다.
참고로 오라클의 ROWNUM 키워드에 대해 아래 링크에서 보다 상세히 확인하실 수 있습니다.
URL : https://5dol.tistory.com/127
감사합니다.
표준프레임워크센터입니다.
페이지번호와 정렬을 함께 사용하면 정렬이 이루어지기 전에 페이지번호가 붙어서 원하는대로 정렬이 되지 않습니다.
따라서 조회 시 정렬이 이루어지게 하고 이후 페이지번호를 붙여야 합니다.
이후 페이징 처리는 위의 쿼리를 한번 더 감싼 형태로 구성한 후 페이지번호 구간으로 조회하는 쿼리를 구성하시면 됩니다.
참고로 오라클의 ROWNUM 키워드에 대해 아래 링크에서 보다 상세히 확인하실 수 있습니다.
URL : https://5dol.tistory.com/127
감사합니다.