`
ponlya
  • 浏览: 159512 次
  • 性别: 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没有封装分页吗,那么常用的方法。。。

相关推荐

    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)(解决重复提交、...

    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...

    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

    JAVA框架核心技术笔记

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

    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工程师培训笔记

    达内培训笔记,写得不错内容:CoreJava、Oracle、Servlet、JSP、javascript、AJAX、JDBC、HTML、 Struts1、Hibernate、Spring、EJB、XML、分页、购物车

    J2EE 三大框架_笔记

    里面有很多常用的搭配的经典的例子,1-JSP+JDBC_假分页笔记 9-Struts高级部分(1)(解决重复提交、上传组件)笔记

    Java学习笔记-个人整理的

    {13.5}分页查询}{196}{section.13.5} {13.5.1}MySQL}{198}{subsection.13.5.1} {13.6}连接池}{199}{section.13.6} {13.6.1}Wrapper}{199}{subsection.13.6.1} {13.7}DAO}{199}{section.13.7} {13.8}java.util....

    MyBatis学习导图和资源

    有关Mybaits的学习路线与知识点,压缩包中有相关word文档(尚硅谷的学习笔记),含有相关的源代码(模块使用了父子关系),使用了maven工程的...适合初学者学习(学习过JDBC,spring(了解相关配置文件的知识)即可)

    互联网创意产品众筹平台

    问题一箩筐-jdbc.properties属性文件设置错误,无法连接数据库, Q) {; h4 t( ?: r& ^ │ 5.问题一箩筐-关于url扩展名称问题 │ 6.问题一箩筐-关于打印日志log4j问题5 y: }- e: Z$ p6 X9 d0 A9 @ │ 7.问题一箩筐-生产...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    微服务架构之Spring Cloud Eureka 场景分析与实战.wmv │ │ │ ├─11.高性能必学之Mysql主从架构实践 │ │ 11.高性能必学之Mysql主从架构实践.mp4 │ │ │ ├─12.架构师不得不知道的Spring事物不能回滚的深...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 16-tomcat的3种运行模式和执行器(线程池).avi │ 17-tomcat中连接器.avi │ 18-禁用AJP连接器.avi │ 19-tomcat中JVM参数优化.avi │ ├─补充2:Redis3.0新特性、主从复制、集群视频教程 │ │ 打开必读.txt ...

Global site tag (gtag.js) - Google Analytics