====== 전자정부표준프레임워크 페이징 처리 ====== * description : 전자정부표준프레임워크 페이징 처리 * author : 오션 * email : shlim@repia.com * lastupdate : 2022-09-01 \\ ====== 전자정부표준프레임워크 페이징 처리 ====== ==== PaginationInfo.class ==== public class PaginationInfo { /** * Required Fields * - 이 필드들은 페이징 계산을 위해 반드시 입력되어야 하는 필드 값들이다. * * currentPageNo : 현재 페이지 번호 * recordCountPerPage : 한 페이지당 게시되는 게시물 건 수 * pageSize : 페이지 리스트에 게시되는 페이지 건수, * totalRecordCount : 전체 게시물 건 수. */ private int currentPageNo; private int recordCountPerPage; private int pageSize; private int totalRecordCount; /** * Not Required Fields * - 이 필드들은 Required Fields 값을 바탕으로 계산해서 정해지는 필드 값이다. * * totalPageCount: 페이지 개수 * firstPageNoOnPageList : 페이지 리스트의 첫 페이지 번호 * lastPageNoOnPageList : 페이지 리스트의 마지막 페이지 번호 * firstRecordIndex : 페이징 SQL의 조건절에 사용되는 시작 rownum. * lastRecordIndex : 페이징 SQL의 조건절에 사용되는 마지막 rownum. */ private int totalPageCount; private int firstPageNoOnPageList; private int lastPageNoOnPageList; private int firstRecordIndex; private int lastRecordIndex; \\ ==== SearchVO.java ==== public class SearchVO implements Serializable { ... /** 검색조건 */ private String searchCondition = ""; /** 검색Keyword */ private String searchKeyword = ""; /** 검색사용여부 */ private String searchUseYn = ""; /** 검색조건 */ private String searchCnd = ""; /** 현재페이지 */ private int pageIndex = 1; /** 페이지갯수 */ /* 한 페이지에 표시되는 게시물 건수(가로 행 rows의 개수) */ private int pageUnit = 10; /** 페이지사이즈 */ /* 페이징에 표시되는 번호들의 개수를 지정 */ private int pageSize = 10; /** firstIndex */ private int firstIndex = 1; /** lastIndex */ private int lastIndex = 1; /** recordCountPerPage */ /* 하나의 페이지 당 게시되는 게시물 수(가로 행 rows의 개수) */ private int recordCountPerPage = 10; \\ ==== Example ==== 테이블에 등록된 가로 행 rows(데이터)의 총 개수가 21개인 경우,\\ PaginationInfo paginationInfo = new PaginationInfo(); /* 현재 페이지 번호를 저장*/ paginationInfo.setCurrentPageNo(projMngVO.getPageIndex()); /* 1개의 페이지에 표시되는 등록된 Repia 진행 프로젝트의 개수 */ paginationInfo.setRecordCountPerPage(5); // projMngVO.getPageUnit() /* 페이징에 표시되는 번호들의 개수를 3개로 지정 */ /* 1,2,3이 보이고, Next버튼 클릭하면 4,5 만 보임 - 등록된 진행프로젝트 개수가 21개인 경우 */ paginationInfo.setPageSize(3); \\ 테이블에 등록된 가로 행 rows(데이터)의 총 개수 : 21개\\ 하나의 페이지 당 표시되는 가로 행 rows(데이터)의 개수 : 5개\\ 페이징에 표시되는 번호들의 개수 : 3개\\ \\ firstRecordIndex = (현재 페이지 번호 - 1) * 하나의 페이지 당 표시되는 가로 행 rows의 개수\\ --> 현재 페이지가 4페이지인 경우 : firstRecordIndex = (4-1) * 5 = 15\\ \\ lastRecordIndex = 현재 페이지 번호 * 하나의 페이지 당 표시되는 가로 행 rows의 개수\\ --> lastRecordIndex = 4 * 5 = 20\\ \\ === sql.xml ==== ... FROM table_name LIMIT #{recordCountPerPage} OFFSET #{firstIndex} \\ sql의 LIMIT clause의\\ LIMIT #{recordCountPerPage}에는 recordCountPerPage = 5가 입력됨\\ OFFSET #{firstIndex}에는 firstRecordIndex = 15가 입력됨\\ \\ 현재 위치한 4페이지에, OFFSET clause에 따라서 16번째의 데이터부터 5개(16~20)를 순서대로 삽입\\ === 결과 화면 === {{:wiki:miscellaneous:페이징01.png?600|페이징01}} {{:wiki:miscellaneous:페이징02.png?600|페이징02}} ==== Ref LInk ==== [[https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:view:paginationtag|페이징처리]] \\ {{tag> 오션 전자정부표준프레임워크 페이징처리}}