分页/pagination

package org.pagination;
import java.util.List;

public interface Pagination<T> {
public Integer getTotalElements();
public List<T> getPageList();
}

package org.pagination;

import java.util.List;

public interface QueryHandler<T> {
public Integer getCount();

public List<T> getData(Integer pageIndex, Integer pageSize);
}

package org.pagination.impl;

import java.util.List;

import org.pagination.Pagination;
import org.pagination.QueryHandler;

public class DefaultPagination<T> implements Pagination<T> {
private Integer totalElements;
private List<T> pageList;
private QueryHandler<T> queryHandler;
private Integer pageIndex;
private Integer pageSize;
private Integer totalPages;
public DefaultPagination(Integer pageIndex,Integer pageSize,QueryHandler<T> queryHandler) {
this.queryHandler = queryHandler;
setTotalElements();//初始化总行数
setPageSize(pageSize);//修正页大小
calcTotalPage();//计算总页数
setPageIndex(pageIndex);//修正页码
setPageList();//初始化当前页数据
}
private void setTotalElements() {
totalElements = queryHandler.getCount();
}
private void setPageSize(Integer pageSize) {
if (pageSize < 1) {
this.pageSize = 1;
} else if (pageSize > totalElements && totalElements > 0) {
this.pageSize = totalElements;
} else {
this.pageSize = pageSize;
}
}
private void calcTotalPage(){
if (pageSize > 0) {
totalPages = (totalElements + pageSize - 1) / pageSize;
}

private void setPageIndex(Integer pageIndex) {
if (pageIndex < 1) {
this.pageIndex = 1;
} else if (pageIndex > totalPages && totalPages > 0) {
this.pageIndex = totalPages;
} else {
this.pageIndex = pageIndex;
}
}
private void setPageList() {
pageList = queryHandler.getData(pageIndex, pageSize);
}
@Override
public Integer getTotalElements() {
return totalElements;
}

@Override
public List<T> getPageList() {
return pageList;
}
}

时间: 2024-10-13 00:02:26

分页/pagination的相关文章

分页Pagination

分页Pagination REST framework提供了分页的支持. 我们可以在配置文件中设置全局的分页方式,如: REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 100 # 每页数目 } 也可通过自定义Pagination类,来为视图添加不同分页行为.在视图中通过pagination_clas属性来指明. from re

django 分页 pagination的使用记录

1.安装 pip install django-pagination 2.修改setting.py文件 INSTALLED_APPS = [ # ** 'pagination',] MIDDLEWARE_CLASSES = ( # ... 'pagination.middleware.PaginationMiddleware', ) TEMPLATE_CONTEXT_PROCESSORS = [ 'django.contrib.auth.context_processors.auth', 'dj

关于分页Pagination的使用

在这个例子当中,用的是ssm框架整合,并且用的是Pagination实现分页 先来看一下分页中用到的类的源码 Paginable.java 1 package cn.itcast.common.page; 2 3 /** 4 * 分页接口 5 */ 6 public interface Paginable { 7 /** 8 * 总记录数 9 * 10 * @return 11 */ 12 public int getTotalCount(); 13 14 /** 15 * 总页数 16 * 1

ElementUI分页Pagination自动到第一页

当数据量过多时,使用分页请求数据. 设置分页的页数自动回到第一页. 例: <div class="pagination"> <el-pagination background layout="prev, pager, next" :current-page.sync="currentPage" @current-change="current_change" :page-size="7"

五:Vue之ElementUI 表格Table与分页Pagination组件化

(注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 在平时的web项目开发过程中,列表分页查询展示应用的很频繁,为了便于阅读并减少代码的冗余,所以对ElementUI的表格和分页组件进行了二次封装. 首先在工程下的components目录下创建common文件夹并新建commonTable.vue文件,添加如下代码: <template> <div id="commonTable"> <el-tabl

jquery+jquery.pagination+php+ajax 无刷新分页

<!DOCTYPE html> <html ><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>预约列表</title> <link rel="stylesheet" href="./static/pagination.css"> &

ajax 分页(jquery分页插件pagination) 小例3

<#macro ajaxPaginte url > <script type="text/javascript"> var PageSize = 10;//每页行数 var IsInit = true;//初始化 var search= function(pageIndex,initFlag) { var url = "${url}"; $.ajax({ type: 'GET', url: url, data: { pageNumber:pa

bootstrap table 服务器端分页--ashx+ajax

1.准备静态页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <meta charset="utf-8" /> 7 <link rel="

Bootstrap 分页、标签、徽章、超大屏幕、页面标题

分页(pagination), 是一种无序列表 1.默认的分页(.pagination) 代码示例: 1 <ul class="pagination"> 2 <li><a href="#">«</a></li> 3 <li><a href="#">1</a></li> 4 <li><a href="#"