📄 page.java
字号:
/**
*
*/
package phz.util.page;
public class Page {
/** 当前页码 */
private int currentPage;
/** 起始结果 */
private int pageStart;
/** 每页结果数 */
private int pageSize;
/**
* 总共结果数
* <p>
* 必须提供,否则无法分页,所以在分页前,应该先从数据库查出要分页的数据总的结果数
* <P>
* ^_^,这谁不知道呀!
*/
private int totalSize;
/** 总共页数 */
private int totalPage;
/** 分页栏长度 */
private int pageBarMaxSize;
/** 页码数组 */
private int[] pages;
/**
* 全构造器
*
* @param currentPage
* 当前页码
* @param totalSize
* 总共结果数
* @param pageSize
* 每页结果数
* @param pageBarMaxSize
* 分页栏长度
*/
public Page(int currentPage, int totalSize, int pageSize, int pageBarMaxSize) {
this.currentPage = currentPage;
this.totalSize = totalSize;
this.pageSize = pageSize;
this.pageBarMaxSize = pageBarMaxSize;
}
/**
* 默认分页栏长度为10
*
* @param currentPage
* 当前页码
* @param totalSize
* 总共结果数
* @param pageSize
* 每页结果数
*/
public Page(int currentPage, int totalSize, int pageSize) {
this.currentPage = currentPage;
this.totalSize = totalSize;
this.pageSize = pageSize;
this.pageBarMaxSize = 10;
}
/**
* 默认 每页结果数5条 分页栏长度为10
* <p>
* 该构造器应该是最常用的
*
* @param currentPage
* 当前页码
* @param totalSize
* 总共结果数
*/
public Page(int currentPage, int totalSize) {
this.currentPage = currentPage;
this.totalSize = totalSize;
this.pageSize = 5;
this.pageBarMaxSize = 10;
}
/**
* 默认 当前也为第1页 每页结果数5条 分页栏长度为10
*
* @param totalSize
* 总共结果数
*/
public Page(int totalSize) {
this.currentPage = 1;
this.totalSize = totalSize;
this.pageSize = 5;
this.pageBarMaxSize = 10;
}
/** 是否有首页 */
public boolean isHasFirst() {
if (getCurrentPage() == 1)
return false;
return true;
}
/** 是否有尾页 */
public boolean isHasLast() {
if (getCurrentPage() == getTotalPage())
return false;
return true;
}
/** 是否有前一页 */
public boolean isHasPrevious() {
if (isHasFirst())
return true;
return false;
}
/** 是否有下一页 */
public boolean isHasNext() {
if (isHasLast())
return true;
return false;
}
public int getCurrentPage() {
if (currentPage < 1 || currentPage > getTotalPage()) {
return 1;
}
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageStart() {
pageStart = (getCurrentPage() - 1) * getPageSize();
return pageStart;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalSize() {
return totalSize;
}
public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}
/** 获得总共页数 */
public int getTotalPage() {
totalPage = getTotalSize() / getPageSize();
if (getTotalSize() % getPageSize() != 0)
totalPage++;
return totalPage;
}
public int getPageBarMaxSize() {
return pageBarMaxSize;
}
public void setPageBarMaxSize(int pageBarMaxSize) {
this.pageBarMaxSize = pageBarMaxSize;
}
/** 获得页码数组 像: 1 2 3 4 5 6 7 8 9 10 */
public int[] getPages() {
int startPage = getCurrentPage() / getPageBarMaxSize()
* getPageBarMaxSize() + 1;
int endPage = getCurrentPage() / getPageBarMaxSize()
* getPageBarMaxSize() + getPageBarMaxSize();
if (getCurrentPage() % getPageBarMaxSize() == 0) {
startPage -= getPageBarMaxSize();
endPage -= getPageBarMaxSize();
}
startPage = startPage < 1 ? 1 : startPage;
startPage = startPage > getTotalPage() ? getTotalPage() : startPage;
endPage = endPage < 1 ? 1 : endPage;
endPage = endPage > getTotalPage() ? getTotalPage() : endPage;
pages = new int[endPage - startPage + 1];
for (int i = startPage; i < endPage + 1; i++) {
pages[i - startPage] = i;
}
return pages;
}
// 免费赠送的测试,o(∩_∩)o
// public static void main(String[] args) {
// Page page = new Page(8, 113, 5, 10);
// if (page.isHasFirst()) {
// System.out.print(" 首页 ");// 首页
// }
// if (page.isHasPrevious()) {
// System.out.print(" 上一页 ");// 上一页
// }
// int[] is = page.getPages();
// for (int i = 0; i < is.length; i++) {
// System.out.print(is[i] == page.getCurrentPage() ? " [" + is[i]
// + "] " : " " + is[i] + " ");// 1 2 3 4 5 6 7 [8] 9 10
// }
// if (page.isHasNext()) {
// System.out.print(" 下一页 ");// 下一页
// }
// if (page.isHasLast()) {
// System.out.print(" 尾页 ");// 尾页
// }
// System.out.println();
// System.out.print(" 当前第 " + page.getCurrentPage() + " 页,总共有 "
// + page.getTotalPage() + " 页 ");
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -