반응형
페이징 작업중 데이터 역순 처리를 위해 작업하다가 한참 헤매서 정리
우선 환경은 jsp, postgreSQL
SQL에서 최신 시간을 기준으로 번호를 역순으로 가져와서 화면에 출력시키려했는데
그렇게 하지 않고 forEach에서 살짝의 알고리즘으로 처리하는게 훨씬 나았다.
SELECT *
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY REG_DATE DESC) AS ROW_NUM
, ID
, TITLE
, USE_YN
, USR_ID
, TO_CHAR(REG_DATE, 'YYYY-MM-DD HH24:MI:SS') AS REG_DATE
FROM REPORT_MAP_DATA
) AS Z
WHERE ROW_NUM BETWEEN #{start} AND #{end}
행에 번호 메길려면 ROW_NUMBER 처리를 해야한다.
<c:forEach var="item" items="${dataList}" varStatus="status">
<tr>
<td>${pagination.total - ((pagination.nowPage-1) * 10 + status.index)}</td>
<td class="txt-L p20">${item.TITLE}</td>
<td>${item.USR_ID}</td>
<td>${item.REG_DATE}</td>
</tr>
</c:forEach>
- varStatus → forEach가 돌아갈때 상태 변수 ( 순서를 체크할 수 있다. )
- 전체 데이터수 - ( 현재 페이지 - 1 ) * 보여질 데이터 수 + 돌고있는 forEach에 index 이다.
반응형