分页功能是在mysql+spring+jsp 下demo
1、效果图
2、DAO查询
public Paging getAllCustomer(int pageNumber, int pageSize) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("start", pageNumber);
map.put("limit", pageSize);
Paging paging = new Paging();
String sql = "select * from customer";
String countSql = SqlUtils.buildCountQuery(sql);
paging.setTotalCount(template.queryForInt(countSql, map));
String querySql = SqlUtils.buildLimitedQuery(sql);
paging.setCollections(template.query(querySql, ParameterizedBeanPropertyRowMapper.newInstance(Customer.class),map));
return paging;
}
public class SqlUtils {
// static final String DEFAULT_DATABASE = "hsql";
static final String DEFAULT_DATABASE = "mysql";
public static String buildLimitedQuery(String sql) {
if ("hsql".equals(DEFAULT_DATABASE)) {
return buildHsqldbLimitedQuery(sql, true);
} else if ("mysql".equals(DEFAULT_DATABASE)) {
return buildMysqlLimitedQuery(sql, true);
}
return "";
}
public static String buildHsqldbLimitedQuery(String sql, boolean hasOffset) {
return new StringBuffer(sql.length() + 10).append(sql).insert(
sql.toLowerCase().indexOf("select") + 6,
hasOffset ? " limit :start :limit" : " top :limit").toString();
}
public static String buildMysqlLimitedQuery(String sql, boolean hasOffset) {
return new StringBuffer(sql.length() + 20).append(sql).append(
hasOffset ? " limit :start, :limit" : " limit :limit")
.toString();
}
public static String buildCountQuery(String sql) {
return "select count(*) from (" + sql + ") cnt_sub";
}
}
public class Paging {
private int totalCount;
private Collection<?> collections;
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public Collection<?> getCollections() {
return collections;
}
public void setCollections(Collection<?> collections) {
this.collections = collections;
}
}
3、spring action
@RequestMapping("/customer/list.do")
public String list(String pageNumberStr, Model model) {
int pageNumber = 1;
if (pageNumberStr != null && !pageNumberStr.isEmpty()) {
pageNumber = Integer.parseInt(pageNumberStr);
}
int pageSize = 5; //分页大小
Paging paging = customerManager.getAllCustomer((pageNumber - 1) * pageSize, pageSize);
int totalPosts = paging.getTotalCount();//总笔数
int totalPages = totalPosts / pageSize + ((totalPosts % pageSize) > 0 ? 1 : 0);//总页数
model.addAttribute("pageSize", pageSize);
model.addAttribute("totalPosts", totalPosts);
model.addAttribute("pageNumber", pageNumber);//页码
model.addAttribute("totalPages", totalPages);
model.addAttribute("results", paging.getCollections());
return "customer/list";
}
4、list.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
//第一页
function first_page(formName) {
if(formName){
var page = parseInt(formName.pageNumberStr.value);
if(page > 1) {
formName.pageNumberStr.value = 1;
formName.submit();
}
}
}
//上一页
function prev_page(formName) {
var page = parseInt(formName.pageNumberStr.value);
if(page > 1) {
formName.pageNumberStr.value = page - 1;
formName.submit();
}
}
//下一页
function next_page(formName) {
var page = parseInt(formName.pageNumberStr.value);
var pages = parseInt(formName.totalPages.value);
if(page < pages) {
formName.pageNumberStr.value = page + 1;
formName.submit();
}
}
//末页
function last_page(formName) {
var page = parseInt(formName.pageNumberStr.value);
var pages = parseInt(formName.totalPages.value);
alert('page:'+ page +':pages'+ pages);
if(page < pages) {
formName.pageNumberStr.value = formName.totalPages.value;
formName.submit();
}
}
//选择某一页
function gotoSelectedPage(formName,_pageNumber)
{
alert(_pageNumber);
formName.pageNumberStr.value=_pageNumber;
formName.submit();
}
</script>
<% String rootPath = request.getContextPath(); %>
<h1>Paging Demo</h1>
<hr />
<table>
<thead>
<tr align="center">
<td width="10%">id</td>
<td width="70%">no</td>
<td colspan="3">name</td>
</tr>
</thead>
<tbody>
<c:forEach items="${results}" var="customer">
<tr align="center">
<td>${customer.id}</td>
<td>${customer.customerNo}</td>
<td>${customer.customerName}</td>
</tr>
</c:forEach>
</tbody>
<tfoot>
<tr align="center">
<td colspan="5">
<form action="<%=rootPath %>/customer/list.do" method="get" id="navigatorForm">
<input type="hidden" name="pageNumberStr" id="pageNumberStr" value="${pageNumber}"/>
<input type="hidden" name="totalPages" id="totalPages" value="${totalPages}"/>
总共${totalPosts}条记录${totalPages}页,当前第${pageNumber}页
<a href="javascript:first_page(document.getElementById('navigatorForm'))">第一页</a>
<c:if test="${pageNumber>1}">
<a href="javascript:prev_page(document.getElementById('navigatorForm'))">上一页</a>
</c:if>
跳转到第 <select name="_pageNumber" id="_pageNumber" onchange="gotoSelectedPage(document.getElementById('navigatorForm'),this.value);">
<c:forEach begin="1" end="${totalPages}" step="1" var="pageIndex">
<c:choose>
<c:when test="${pageIndex eq pageNumber}">
<option value="${pageIndex}" selected="selected">${pageIndex}</option>
</c:when>
<c:otherwise>
<option value="${pageIndex}">${pageIndex}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
页
<c:if test="${pageNumber<totalPages}">
<a href="javascript:next_page(document.getElementById('navigatorForm'))">下一页</a>
</c:if>
<a href="javascript:last_page(document.getElementById('navigatorForm'))">末页</a>
</form>
</td>
</tr>
</tfoot>
</table>
<hr/>
</body>
</html>
- 大小: 10.5 KB
分享到:
相关推荐
在page中无需处理任何分页相关逻辑,无需在data中定义任何分页相关变量,全由z-paging内部处理。 【超灵活,支持各种类型自定义】支持自定义下拉刷新,自定义上拉加载更多,自带自定义下拉刷新效果,及其他数十种...
在本文中,我们将深入探讨如何使用uniapp与z-paging插件来实现页面的下拉刷新、上拉加载以及分页加载功能。...在实际开发过程中,你可能需要根据具体需求进行一些调整,但上述流程提供了一个基础的实现框架。
【标题】"ZK_DEMO-listbox-paging.zip_DEMO_ListBox Java" 是一个与Java相关的压缩包,其中包含了一个示例项目,演示了如何在Java应用程序中实现ListBox的分页功能。ZK是一个基于Java的富客户端用户界面框架,它使得...
一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例 一个简单的Paging自定义分页范例
压缩包中的 **knockout-paging-master** 文件夹很可能包含了以下内容: - **src**:源代码目录,可能有JavaScript文件(如`paging.js`),实现分页扩展器的核心逻辑。 - **demo** 或 **example**:示例代码,展示了...
android-mvvm-paging-demo 使用Dagger2,Room,RxJava2,Databinding,FastAndroidNetworking,Fresco,Paging,Jetpack ...
mybatis-paging-1.0.jar 是mybatis的一个分页插件的jar包,一直没有搜索到,今天好不容易找到了,跟大家分享
【标题】"paging_demo"是一个基于JSP和Servlet技术实现的分页示例项目,它展示了如何在Web应用中处理大量数据的分页显示。在Web开发中,尤其是在展示数据库中的大量记录时,分页是一种常见的优化用户体验的方法,...
jquery-ui-tabs-paging 从 code.google.com/p/jquery-ui-tabs-paging 自动导出 当标签不适合包含 UL 的宽度时,将显示“上一个”和“下一个”按钮以滚动标签。 特征 : 当窗口大小改变时自动调整大小。 下一个和...
在这个"jQuery-Paging-master"目录中,我们可能找到以下文件和目录结构: - `js/`:存放分页插件的JavaScript源代码。 - `css/`:包含分页样式的CSS文件。 - `demo/`:提供示例代码和演示页面,帮助开发者理解如何...
开源项目-ulule-paging是一个专为数据分页设计的库,它支持多种数据存储系统,如GORM。这个项目的目的是简化在开发过程中处理大量数据时的分页逻辑,提高应用程序的性能和用户体验。通过使用ulule-paging,开发者...
var pager = $('#paging-container').paging({ pageSize: 10, totalPages: 50 }); // 假设有个loadData函数从服务器获取数据 function loadData(pageIndex) { // AJAX请求获取第pageIndex页数据,然后填充到...
首先,我们来了解一下jQuery的基础知识。jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。通过使用jQuery,开发者可以更高效地编写JavaScript代码,而无需关注浏览器...
在DCloud插件市场中访问: ://ext.dcloud.net.cn/plugin?name=z-paging 反馈qq群(点击加群): 平台兼容性 应用程序 5天 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序 √ √ √ √ √ √ √ ...
### 按需分页(On-Demand Paging)在Linux Kernel中的实现与挑战 #### 标题解析 标题“312_On-demand-paging_LLiss.pdf”表明这是一份关于按需分页技术的报告或演讲文档,由Liran Liss在2017年的年度研讨会上提出。...
春天启动jpa休息演示过滤器分页排序使用Spring引导MVC的示例应用程序Spring Data JPA能够执行过滤,分页和排序。过滤REST API按照演示应用程序中的说明处理过滤器。 它将以下概念解析并转换为org.springframework....
在Android开发领域,Retrofit、MVVM架构以及Paging库是三个非常重要的概念,它们各自在构建高效、可维护的应用程序中发挥着关键作用。现在,让我们深入探讨这些技术及其在"Retrofit-MVVM-Paging"项目中的应用。 ...
"ext--grid--demo"可能是一个示例项目,展示了如何在Ext JS环境中使用数据网格功能。 在Ext JS中,Grid是用于显示和操作表格数据的核心组件。它支持多种功能,如排序、分页、过滤、编辑等,使得数据管理变得简单。...
考虑到“Tugas-Bab-5-paging-main”这个文件名,这可能是一个主文件,负责接收请求、处理分页逻辑并渲染页面。在这样的文件中,可能会包含如下部分: 1. 数据库连接:建立与数据库的连接。 2. 计算总记录数:执行一...
【uniapp插件z-paging2.2.0】是一个专为uniapp框架设计的分页组件,旨在解决在移动应用开发中数据加载分页显示的问题。uniapp是一款基于Vue.js的多端开发框架,它允许开发者编写一次代码,就可以在iOS、Android、H5...