`
ponlya
  • 浏览: 164763 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Spring3笔记之 JDBC(分页)

阅读更多

接上篇的实体,DAO接口,实现,测试及XML http://ponlya.iteye.com/blog/1017538,这里只把上篇中的分页对象贴出来,其中参考了:参考: http://www.codefutures.com/tutorials/spring-pagination/文章

com.spring305.jdbc.page.CurrentPage.java

public class CurrentPage<E> {
	private int pageNumber;
	private int pagesAvailable;
	private List<E> pageItems = new ArrayList<E>();

	public void setPageNumber(int pageNumber) {
		this.pageNumber = pageNumber;
	}

	public void setPagesAvailable(int pagesAvailable) {
		this.pagesAvailable = pagesAvailable;
	}

	public void setPageItems(List<E> pageItems) {
		this.pageItems = pageItems;
	}

	public int getPageNumber() {
		return pageNumber;
	}

	public int getPagesAvailable() {
		return pagesAvailable;
	}

	public List<E> getPageItems() {
		return pageItems;
	}
}

 

分页辅助类com.spring305.jdbc.page.PagingHelper.java

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;

/**
 * 分页辅助类
 * 
 * @author ZhengChao
 * 
 */
public class PagingHelper<E> {
	@SuppressWarnings("unchecked")
	public CurrentPage<E> fetchPage(
			final JdbcTemplate jt,
			final String sqlCountRows, 
			final String sqlFetchRows,
			final Object args[], 
			final int pageNo, 
			final int pageSize,
			final ParameterizedRowMapper<E> rowMapper) {
		// determine how many rows are available
		int rowCount = jt.queryForInt("select count(*) from T_people where id >= ?",new Object[]{1});
		rowCount = jt.queryForInt(sqlCountRows, args);
		// calculate the number of pages
		int pageCount = rowCount / pageSize;
		if (rowCount > pageSize * pageCount) {
			pageCount++;
		}
		// create the page object
		final CurrentPage<E> page = new CurrentPage<E>();
		page.setPageNumber(pageNo);
		page.setPagesAvailable(pageCount);
		// fetch a single page of results
		final int startRow = (pageNo - 1) * pageSize;
		jt.query(sqlFetchRows, args, new ResultSetExtractor() {
			public Object extractData(ResultSet rs) throws SQLException,
					DataAccessException {
				final List pageItems = page.getPageItems();
				int currentRow = 0;
				while (rs.next() && currentRow < startRow + pageSize) {
					if (currentRow >= startRow) {
						pageItems.add(rowMapper.mapRow(rs, currentRow));
					}
					currentRow++;
				}
				return page;
			}
		});
		return page;
	}
}

 

测试:

@Test//分页测试
	public void testPage() throws SQLException{
		CurrentPage<People> currentPagePeople = peopleDao.getPeoplePage(1, 2, 0);
		List<People> pList = currentPagePeople.getPageItems();
		for (int i = 0; i <pList.size(); i++) {
			System.out.println(pList.get(i));
		}
		
	}

 

分享到:
评论
2 楼 ponlya 2013-05-03  
ayanami001 写道
为什么spring没有封装分页吗,那么常用的方法。。。

去问下作者吧?
各个数据库厂商的分页写法有异,除了Hibernate这样的ORM做了,其它的都仅是对JDBC的简单的封装而已.
1 楼 ayanami001 2012-04-01  
为什么spring没有封装分页吗,那么常用的方法。。。

相关推荐

    达内,tarena,spring笔记,springPPT课件,达内spring笔记

    Spring笔记可能涵盖了以下内容: 1. **IoC(Inversion of Control)容器**:Spring的核心特性之一,通过反转控制权,让框架负责管理对象的生命周期和装配,开发者只需定义配置,无需手动创建对象。 2. **依赖注入...

    JSP+JDBC_真分页(基于Oracle数据库分页)笔记

    在更复杂的系统中,可能需要结合后端框架如Spring MVC、Struts等,以及前端库如Bootstrap、jQuery等来实现更强大和灵活的分页功能。 总之,JSP+JDBC的真分页技术在处理大量数据时能显著提升性能,但可能会牺牲一...

    JAVA框架核心技术笔记

    1-JSP+JDBC_假分页笔记 9-Struts高级部分(1)(解决重复提交、上传组件)笔记 11-留言管理程序_使用Struts + DAO完成笔记 54留言管理程序_Struts + Spring + Hibernate笔记 ......

    J2EE框架_笔记_b

    3-JSP+DAO和MVC+DAO(基于MySQL数据库分页)-v笔记 4-Struts入门笔记 005_Struts+DAO登陆 6-Struts标签-BEAN标签笔记 7-Struts标签 -LOGIC标签笔记 8-Struts标签- HTML标签笔记 9-Struts高级部分(1)(解决重复提交、...

    J2EE框架_笔记_c

    3-JSP+DAO和MVC+DAO(基于MySQL数据库分页)-v笔记 4-Struts入门笔记 005_Struts+DAO登陆 6-Struts标签-BEAN标签笔记 7-Struts标签 -LOGIC标签笔记 8-Struts标签- HTML标签笔记 9-Struts高级部分(1)(解决重复提交、...

    J2EE三大框架_笔记_a

    3-JSP+DAO和MVC+DAO(基于MySQL数据库分页)-v笔记 4-Struts入门笔记 005_Struts+DAO登陆 6-Struts标签-BEAN标签笔记 7-Struts标签 -LOGIC标签笔记 8-Struts标签- HTML标签笔记 9-Struts高级部分(1)(解决重复提交、...

    JAVA框架核心技术笔记3 struts hibernate spring

    "51-52使用Struts + Spring + Hibernate完成用户登陆笔记.pdf"和"53使用Struts + Spring + Hibernate完成分页笔记.pdf"提供了实际的项目示例,演示了这三个框架如何协同工作,完成用户登录和分页功能。"54留言管理...

    尚硅谷spring boot 代码及笔记

    同时,可能会讲解如何使用 Spring Data JPA 的 CRUD 操作,以及分页和排序功能。 Spring Boot 对于微服务架构的支持也很全面,例如集成 Zuul 或 Netflix Eureka 进行服务发现和路由,或者使用 Ribbon 进行客户端...

    java中级笔记+severlet jsp 分页 ajax等技术的笔记

    3. **分页**:在处理大量数据时,分页技术是非常必要的,它可以提高用户体验,避免一次性加载过多数据导致的性能问题。在Java Web开发中,分页通常通过查询数据库时指定页码和每页条目数量实现。可以使用SQL的LIMIT...

    javaEE框架笔记,识货人下

    3-JSP+DAO和MVC+DAO(基于MySQL数据库分页)-v笔记.pdf 33-37Hibernate1对N案例笔记.pdf 38-43Hibernate多对多案例笔记.pdf 4-Struts入门笔记.pdf 44登陆案例(Struts+DAO+Hibernate)笔记.pdf 45-Struts+Hibernate...

    JAVA框架核心技术笔记4 struts hibernate spring

    在“2-JSP+JDBC_真分页(基于Oracle数据库分页)笔记.pdf”和“3-JSP+DAO和MVC+DAO(基于MySQL数据库分页)-v笔记.pdf”中,你可以了解到Hibernate如何替代传统的JDBC进行数据查询,并实现分页功能。同时,Hibernate的...

    Struts + DAO分页笔记

    本笔记将详细介绍如何在Struts框架中结合DAO实现分页功能。 首先,我们需要了解MVC模式。Model代表业务逻辑,View负责数据显示,Controller处理用户请求并协调Model和View。DAO则是Model层的一部分,它封装了对...

    spring-data的学习笔记

    3. **创建Spring核心配置文件**:通常情况下,Spring Boot会自动配置大部分的设置,但如果需要手动配置,可以在`application.properties`或`application.yml`文件中添加配置。 4. **引入数据库连接配置**:通过配置...

    SSH学习基础笔记 .zip

    3-JSP+DAO和MVC+DAO(基于MySQL数据库分页)-v笔记.pdf 4-Struts入门笔记.pdf 005_Struts+DAO登陆.pdf 9-Struts高级部分(1)(解决重复提交、上传组件)笔记.pdf 54留言管理程序_Struts + Spring + Hibernate笔记.pdf

    Spring-data-jpa 学习笔记.docx

    ### Spring-data-jpa 学习笔记 #### 一、spring-data-jpa的简单介绍 Spring Data JPA 是 Spring Data 的一部分,它简化了基于 Java Persistence API (JPA) 的数据访问层开发工作。Spring Data 旨在减少数据访问层...

    ssm整合步骤笔记,迅速搭建ssm可执行项目

    SSM整合步骤笔记主要涉及Java EE开发中常用的Spring、SpringMVC和MyBatis三大框架的整合过程。SSM框架是当前Web开发中非常流行的一种后端技术栈,其目的在于构建高效、解耦的项目结构。在本知识点中,我们将详细介绍...

    springmybatis

    mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in ...

    (魔乐)J2EE三大框架_笔记

    (魔乐)J2EE三大框架_笔记 1-JSP_JDBC_假分页 2-JSP_JDBC_真分页(基于MySQL数据库分页) 3-JSP_DAO和MVC_DAO(基于MySQL数据库分页) ............... 54-留言管理程序 _Struts _ Spring _ Hibernate完成

    java全家桶学习资料

    5. **第七季MyBatis笔记与代码.zip**:MyBatis是一个优秀的持久层框架,它简化了JDBC的繁琐工作,这部分内容可能包括MyBatis的配置,映射文件,动态SQL,以及与Spring的集成。 6. **ssm框架集成笔记与代码文档.zip*...

    MyBatis学习笔记.zip

    MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在这些...

Global site tag (gtag.js) - Google Analytics