똑같은 삽질은 2번 하지 말자
MYSQLでページングをする時 본문
public class PageMaker {
private CriteriaVO cri;
private int totalCount;
private int startPage;
private int endPage;
private boolean prev;
private boolean next;
private int displayPageNum = 5;
public CriteriaVO getCri() {
return cri;
}
public void setCri(CriteriaVO cri) {
this.cri = cri;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
calcData();
}
private void calcData() {
endPage = (int) (Math.ceil(cri.getPage() / (double)displayPageNum) * displayPageNum);
//화면 끝 페이지 번호 = (현재 페이지 번호 / 화면에 보여질 페이지 번호의 갯수) * 화면에 보여질 페이지 번호의 갯수
int tempEndPage = (int)(Math.ceil(totalCount / (double) cri.getPerPageNum()));
//本当に最後のページの番号 = 총 게시글 수 / 한 페이지당 보여줄 게시글의 갯수
if(endPage > tempEndPage) {
endPage = tempEndPage;
}
startPage = (endPage - displayPageNum) + 1;
if(startPage <= 0 ) // totalRecordがdisplayPageNumを満たせない時
startPage = 1;
// 화면 첫 페이지 번호
prev = startPage == 1 ? false : true;
next = endPage * cri.getPerPageNum() >= totalCount ? false : true;
System.out.println(startPage + "st0" + endPage);
}
public int getStartPage() {
return startPage;
}
public void setStartPage(int startPage) {
this.startPage = startPage;
}
public int getEndPage() {
return endPage;
}
public void setEndPage(int endPage) {
this.endPage = endPage;
}
public boolean isPrev() {
return prev;
}
public void setPrev(boolean prev) {
this.prev = prev;
}
public boolean isNext() {
return next;
}
public void setNext(boolean next) {
this.next = next;
}
public int getDisplayPageNum() {
return displayPageNum;
}
public void setDisplayPageNum(int displayPageNum) {
this.displayPageNum = displayPageNum;
}
}
public class CriteriaVO {
private int page; // 現在のページの番号
private int perPageNum; // ページ当り見える文数
public int getPageStart() {
return (this.page-1) * perPageNum;
}
public CriteriaVO(){
System.out.println("Criのコンストラクタ呼出し完了");
this.page = 1;
this.perPageNum = 10;
}
public int getPage(){
return page;
}
public void setPage(int page) {
if(page <= 0){
this.page = 1;
} else {
this.page = page;
}
}
public int getPerPageNum(){
return perPageNum;
}
public void setPerPageNum(int pageCount) {
int cnt = this.perPageNum;
if(pageCount != cnt) {
this.perPageNum = cnt;
} else {
this.perPageNum = pageCount;
}
}
}
SELECT P.* FROM(SELECT * FROM PRODUCTS ORDER BY PSEQ ASC) AS P
LIMIT 20 OFFSET 5;
元々、Oracleでやったことあったんですけど、今回MySQLつかわなくてはいけなくなりまして、
MySQLのLIMIT OFFSET機能を使って見ました!
LIMITの隣の数字の意味は持ってくるレコードの数でOFFSETは何番目から持ってくるということです。
つまり、五番目から20個持ってくる
'Spring > Spring Boot' 카테고리의 다른 글
Spring Boot 개념다지기 No.2 (0) | 2020.04.19 |
---|---|
Spring Boot 개념다지기 No.1 (0) | 2020.04.18 |
Domain Driven Design 도메인 모델 패턴 (0) | 2020.03.07 |
JPA console창에 Insert into values 값 (?,?,?,?) 보이게 하기 (0) | 2020.03.01 |
JPA 에 관해서 (0) | 2020.02.22 |
Comments