Skip to content

Instantly share code, notes, and snippets.

@localghost666
Created August 4, 2019 13:03
Show Gist options
  • Save localghost666/35defea8531b55b35eed8656b1f8c62b to your computer and use it in GitHub Desktop.
Save localghost666/35defea8531b55b35eed8656b1f8c62b to your computer and use it in GitHub Desktop.
게시판 등의 페이지 처리를 위한 모델.
/**
* 게시판 등의 페이지 처리를 위한 모델. 목적 데이터의 전체 건수를 조회해 setTotalRows(rows)하고 calculate()해야 한다.
*
*/
public class PaginationModel {
/** 현재 페이지 번호 */
private Integer currentPage;
/** 한 페이지당 게시되는 게시물 수 */
private Integer rowsPerPage;
/** 전체 게시물 수 */
private Integer totalRows;
/** 전체 페이지 수 */
private Integer totalPages;
/** 한 화면에 표시되는 페이지 리스트의 크기 */
private Integer pageSize;
/** 현재 페이지 리스트의 첫 페이지 수 */
private Integer startPageList;
/** 현재 페이지 리스트의 마지막 페이지 수 */
private Integer endPageList;
/** 현재 페이지의 시작 ROWNUM */
private Integer startRownum;
/** 현재 페이지의 마지막 ROWNUM */
private Integer endRownum;
public PaginationModel() {}
public PaginationModel(Integer currentPage, Integer rowsPerPage, Integer pageSize, Integer totalRows) {
calculate(currentPage, rowsPerPage, pageSize, totalRows);
}
public Integer getCurrentPage() {
return currentPage;
}
public Integer getRowsPerPage() {
return rowsPerPage;
}
public Integer getTotalRows() {
return totalRows;
}
public Integer getTotalPages() {
return totalPages;
}
public Integer getPageSize() {
return pageSize;
}
public Integer getStartPageList() {
return startPageList;
}
public Integer getEndPageList() {
return endPageList;
}
public Integer getStartRownum() {
return startRownum;
}
public Integer getEndRownum() {
return endRownum;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public void setRowsPerPage(Integer rowsPerPage) {
this.rowsPerPage = rowsPerPage;
}
public void setTotalRows(Integer totalRows) {
this.totalRows = totalRows;
}
public void setTotalPages(Integer totalPages) {
this.totalPages = totalPages;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public void setStartPageList(Integer startPageList) {
this.startPageList = startPageList;
}
public void setEndPageList(Integer endPageList) {
this.endPageList = endPageList;
}
public void setStartRownum(Integer startRownum) {
this.startRownum = startRownum;
}
public void setEndRownum(Integer endRownum) {
this.endRownum = endRownum;
}
public void calculate() {
if (this.currentPage == null) {
this.currentPage = 1;
}
if (this.rowsPerPage == null) {
this.rowsPerPage = totalRows;
}
if (this.pageSize == null) {
this.pageSize = 1;
}
if (this.totalRows == null) {
return;
}
calculate(this.currentPage, this.rowsPerPage, this.pageSize, this.totalRows);
}
public void calculate(Integer currentPage, Integer rowsPerPage, Integer pageSize, Integer totalRows) {
this.currentPage = currentPage;
this.rowsPerPage = rowsPerPage;
this.pageSize = pageSize;
this.totalRows = totalRows;
this.totalPages = (totalRows - 1) / rowsPerPage + 1;
this.startRownum = (currentPage - 1) * rowsPerPage;
this.endRownum = currentPage * rowsPerPage;
this.startPageList = ((currentPage - 1) / pageSize) * pageSize + 1;
this.endPageList = startPageList + pageSize - 1;
if (endPageList > totalPages) {
this.endPageList = totalPages;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment