这里封装的是MYSQL的分页实现,不同数据库的特性不同,如mysql的limit,orcale的rownum,mssql的top
demo架构是:spring(jdbcTemplate) + struts2 + mysql + dbcp
分页模型代码:
package com.test.util;
import java.util.List;
import org.springframework.jdbc.core.JdbcTemplate;
public class Pagination {
public static final int NUMBERS_PER_PAGE = 10;
private int totalPages; // 总页数
private int page; // 当前页码
private List resultList; // 结果集存放List
public Pagination(String sql, int currentPage, int numPerPage,JdbcTemplate jTemplate) {
if (jTemplate == null) {
throw new IllegalArgumentException(
"com.starhub.sms.util.Pagination.jTemplate is null,please initial it first. ");
} else if (sql == null || sql.equals("")) {
throw new IllegalArgumentException(
"com.starhub.sms.util.Pagination.sql is empty,please initial it first. ");
}
String countSQL = getSQLCount(sql);
setPage(currentPage);
setTotalPages(numPerPage,jTemplate.queryForInt(countSQL));
int startIndex = (currentPage - 1) * numPerPage; //数据读取起始index
StringBuffer paginationSQL = new StringBuffer(" ");
paginationSQL.append(sql);
paginationSQL.append(" limit "+ startIndex+","+numPerPage);
setResultList(jTemplate.queryForList(paginationSQL.toString()));
}
public String getSQLCount(String sql){
String sqlBak = sql.toLowerCase();
String searchValue = " from ";
String sqlCount = "select count(*) from "+ sql.substring(sqlBak.indexOf(searchValue)+searchValue.length(), sqlBak.length());
return sqlCount;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public List getResultList() {
return resultList;
}
public void setResultList(List resultList) {
this.resultList = resultList;
}
// 计算总页数
public void setTotalPages(int numPerPage,int totalRows) {
if (totalRows % numPerPage == 0) {
this.totalPages = totalRows / numPerPage;
} else {
this.totalPages = (totalRows / numPerPage) + 1;
}
}
}
下载DEMO:
分享到:
相关推荐
SpringJdbcTemplate支持分页查询,通过`SimpleJdbcCall`或`NamedParameterJdbcCall`类,可以配合`RowCallbackHandler`或`ResultSetExtractor`处理分页结果。此外,还可以使用`JdbcPagingItemReader`作为Spring ...
JdbcTemplate是Spring框架提供的一个工具类,简化了与关系型数据库(如MySQL)的交互。它提供了一种模板化的API,用于执行SQL语句,包括查询、更新、插入和删除操作。通过使用JdbcTemplate,开发者可以避免大量的...
在Java的Spring框架中,`JdbcTemplate`是一个非常重要的组件,它提供了数据库操作的简单抽象,使得开发者可以方便地执行SQL语句而无需编写复杂的DAO(数据访问对象)层。在处理大量数据时,传统的分页方法可能会导致...
在本项目中,"SpringMVC+MySQL实现的分页小项目",我们将探讨如何结合SpringMVC框架和MySQL数据库来构建一个具有分页功能的Web应用。SpringMVC是Spring框架的一个模块,专为处理HTTP请求和响应而设计,而MySQL则是一...
在本文中,我们将深入探讨如何将Spring MVC框架与MySQL数据库集成,实现基本的CRUD(创建、读取、更新和删除)操作,并特别关注时间段条件查询。Spring MVC是Spring框架的一部分,它为Web应用程序提供了模型-视图-...
本项目使用MySQL作为持久化存储,SpringMVC通过JdbcTemplate或MyBatis等工具与数据库进行交互。这些工具简化了SQL操作,提高了代码的可维护性。 8. **集成开发环境(IDE)**: 开发过程中可能使用了像Eclipse或...
一个基于Spring依赖注入特性的二级插件的模型,里面主要封装了如下特性:数据库连接池(常用的4-5个)、分页查询(oracle,mysql,sqlserver等)、数据转码(空值、特定、列名等)、数据导出(Pdf,excel,html,...
为了解决这个问题,Spring框架提供了一个强大的工具——JdbcTemplate,它对JDBC进行了封装,简化了数据库操作,同时也保持了良好的灵活性和控制性。本文将深入探讨JdbcTemplate的使用和原理,以及其在实际项目中的...
在实现分页查询时,通常会结合SQL语句中的LIMIT和OFFSET关键字(MySQL)或ROW_NUMBER()函数(SQL Server)等,配合Java的JDBC操作来完成。例如,在Spring框架中,可以使用JdbcTemplate或者MyBatis等持久层工具,通过...
2. JdbcTemplate:这是Spring JDBC的核心类,提供了大量用于执行SQL查询和更新的方法,简化了异常处理,使代码更加简洁和易于维护。 3. SimpleJdbcInsert、SimpleJdbcCall:这两个工具类分别用于简化插入操作和调用...
而Spring JDBC则通过JdbcTemplate和NamedParameterJdbcTemplate提供了一种更底层的SQL执行方式,但仍然可以避免直接在代码中写SQL。 5. `DataAccess.java`和`DataPageInfo.java`:这两个文件可能是项目中的关键组件...
JDBCTemplate是Spring框架的一个模块,它对JDBC进行了封装,简化了数据库操作,降低了出错的可能性。在本项目中,JDBCTemplate负责与MySQL的交互,处理数据的CRUD操作。 4. **IDEA**:IntelliJ IDEA,简称Idea,是...
分页通常通过在后台查询时添加LIMIT和OFFSET子句实现,或者利用Spring的Pageable接口和Page对象进行封装。 6. **SSH整合实践**:SSH整合的关键在于正确配置各个框架的XML配置文件,如struts.xml、hibernate.cfg.xml...
`JdbcTemplate`是Spring框架中用于简化JDBC编程的一种工具,它封装了大量的通用数据库操作。 - **模板设计模式优化DAO**: `JdbcTemplate`简化了异常处理、资源管理等操作。 - **策略设计模式优化DAO**: 通过定义...