`
wangking717
  • 浏览: 262500 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

Spring jdbctemplate + mysql 分页封装

阅读更多

这里封装的是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:

  • gee.rar (6.6 MB)
  • 下载次数: 1274
分享到:
评论
3 楼 aboutibm 2012-11-21  
是后台分页,但是没有带查询参数
2 楼 521069108 2011-09-21  
挺不错的,我也来用用。
1 楼 osacar 2011-07-29  

我自己在你基础上又加了点东西。
很好用的呀,谢谢你啊

相关推荐

    SpringJdbcTemplate封装工具类

    SpringJdbcTemplate支持分页查询,通过`SimpleJdbcCall`或`NamedParameterJdbcCall`类,可以配合`RowCallbackHandler`或`ResultSetExtractor`处理分页结果。此外,还可以使用`JdbcPagingItemReader`作为Spring ...

    SpringMvc+jdbcTemplate+mysql(注解)

    JdbcTemplate是Spring框架提供的一个工具类,简化了与关系型数据库(如MySQL)的交互。它提供了一种模板化的API,用于执行SQL语句,包括查询、更新、插入和删除操作。通过使用JdbcTemplate,开发者可以避免大量的...

    jdbcTemplate分页彻底解决,使用游标滚动

    在Java的Spring框架中,`JdbcTemplate`是一个非常重要的组件,它提供了数据库操作的简单抽象,使得开发者可以方便地执行SQL语句而无需编写复杂的DAO(数据访问对象)层。在处理大量数据时,传统的分页方法可能会导致...

    SpringMVC+MySQL实现的分页小项目

    在本项目中,"SpringMVC+MySQL实现的分页小项目",我们将探讨如何结合SpringMVC框架和MySQL数据库来构建一个具有分页功能的Web应用。SpringMVC是Spring框架的一个模块,专为处理HTTP请求和响应而设计,而MySQL则是一...

    springmvc+mysql增删改查【时间段条件查询】

    在本文中,我们将深入探讨如何将Spring MVC框架与MySQL数据库集成,实现基本的CRUD(创建、读取、更新和删除)操作,并特别关注时间段条件查询。Spring MVC是Spring框架的一部分,它为Web应用程序提供了模型-视图-...

    SpringMVC+mysql(web+手机)

    本项目使用MySQL作为持久化存储,SpringMVC通过JdbcTemplate或MyBatis等工具与数据库进行交互。这些工具简化了SQL操作,提高了代码的可维护性。 8. **集成开发环境(IDE)**: 开发过程中可能使用了像Eclipse或...

    Spring+DWR+EXT 技术的一个人事管理系统

    一个基于Spring依赖注入特性的二级插件的模型,里面主要封装了如下特性:数据库连接池(常用的4-5个)、分页查询(oracle,mysql,sqlserver等)、数据转码(空值、特定、列名等)、数据导出(Pdf,excel,html,...

    JdbcTemplate文件

    为了解决这个问题,Spring框架提供了一个强大的工具——JdbcTemplate,它对JDBC进行了封装,简化了数据库操作,同时也保持了良好的灵活性和控制性。本文将深入探讨JdbcTemplate的使用和原理,以及其在实际项目中的...

    PageBean分页查询

    在实现分页查询时,通常会结合SQL语句中的LIMIT和OFFSET关键字(MySQL)或ROW_NUMBER()函数(SQL Server)等,配合Java的JDBC操作来完成。例如,在Spring框架中,可以使用JdbcTemplate或者MyBatis等持久层工具,通过...

    spring jdbc 使用

    2. JdbcTemplate:这是Spring JDBC的核心类,提供了大量用于执行SQL查询和更新的方法,简化了异常处理,使代码更加简洁和易于维护。 3. SimpleJdbcInsert、SimpleJdbcCall:这两个工具类分别用于简化插入操作和调用...

    java操作mysql数据库,不写sql语句版

    而Spring JDBC则通过JdbcTemplate和NamedParameterJdbcTemplate提供了一种更底层的SQL执行方式,但仍然可以避免直接在代码中写SQL。 5. `DataAccess.java`和`DataPageInfo.java`:这两个文件可能是项目中的关键组件...

    用户信息管理系统源码.zip

    JDBCTemplate是Spring框架的一个模块,它对JDBC进行了封装,简化了数据库操作,降低了出错的可能性。在本项目中,JDBCTemplate负责与MySQL的交互,处理数据的CRUD操作。 4. **IDEA**:IntelliJ IDEA,简称Idea,是...

    SSH整合练习增删改查

    分页通常通过在后台查询时添加LIMIT和OFFSET子句实现,或者利用Spring的Pageable接口和Page对象进行封装。 6. **SSH整合实践**:SSH整合的关键在于正确配置各个框架的XML配置文件,如struts.xml、hibernate.cfg.xml...

    java jdbc 反射 word学习文档

    `JdbcTemplate`是Spring框架中用于简化JDBC编程的一种工具,它封装了大量的通用数据库操作。 - **模板设计模式优化DAO**: `JdbcTemplate`简化了异常处理、资源管理等操作。 - **策略设计模式优化DAO**: 通过定义...

Global site tag (gtag.js) - Google Analytics