本文转载于http://blog.csdn.net/blackwingzhong/article/details/3322145
Displaytag用来实现内存分页的确很方便,但是当列表数据太大,就不适宜一次过读出来内存进行分页了。Displaytag当然也支持进行数据库分页,基本上主要是实现org.displaytag.pagination.PaginatedList接口,并且通过hibernate的相应方法进行查询就行。 本项目是Struts2,Hibernate,Spring主流框架结合开发的。实现数据库分页的步骤为: 1.实现PaginatedList接口 PaginatedList的代码为: public interface PaginatedList { List getList(); int getPageNumber(); int getObjectsPerPage(); int getFullListSize(); String getSortCriterion(); SortOrderEnum getSortDirection(); String getSearchId(); } 从以上代码可以知道,此接口应该有相应的成员变量,那么在实现这个接口的同时,要补充定义好相应的变量。 2.在Hibernate层实现分页查询数据库 Hibernate支持分批对数据库进行查询,这里是使用Query接口: Session s=null; Query query=null; String queryString="select o.id,o.ICityId,o.SName,o.IPublishCount,o.DRegisterDate,r.SRegionName from TbOwnerUser as o,TbRegion as r " + " where o.ERole='owner' and o.ICityId=r.id order by o.ICityId"; try { s= this.getSession(); query= s.createQuery(queryString); //设置起始查询的记录号 query.setFirstResult((pageNumber - 1) * pageSize); //设置一次查询所要获得的记录数,即是每页记录数 query.setMaxResults(pageSize); return query.list(); } catch (Exception e) { System.out.println("获取业主列表时出错!"); e.printStackTrace(); }finally{ try { s.close(); } catch (Exception e) { e.printStackTrace(); } } 其中,实现分页查询的主要是: query.setFirstResult((pageNumber - 1) * pageSize); query.setMaxResults(pageSize); setFirstResult是指定这次查询开始的记录数,setMaxResults是指定一次查询所要查询出的记录条数。每次查询都只会读取pageSize大小的数据出去,那么就节省了很多内存空间了。 3.在action中设置分页相关的参数 HttpServletRequest request=ServletActionContext.getRequest(); HttpSession session=request.getSession(); if(request.getParameter("page")!=null && "".equals(request.getParameter("page"))==false) pageNumber=Integer.parseInt(request.getParameter("page")); else pageNumber=1; ListPagination list=new ListPagination(); list.setFullListSize(this.getDeletedOwnerListSize()); list.setList(backendOwnerUserManageService.getDeletedOwners(pageNumber, SessionParameters.PAGE_SIZE)); list.setObjectsPerPage(SessionParameters.PAGE_SIZE); list.setPageNumber(pageNumber); displaytag是用“page”这个参数来实现页数的传递的,所以request.getParameter("page")获得当前页号。ListPagination list=new ListPagination()为自己实现了PaginatedList的类,在action中要把整个列表大小、当前页数、每页记录数等信息设置给自己实现了PaginatedList的类,之后就可以直接把这个list传递给displaytag进行输出了。 4. displaytag显示 这里只需要把上面设置好的list交给display:table的name属性进行显示就可以。 <display:table name="${backendListOwnerAction.pageList}" id="ownerTable" > </displaytag:table> 至此就简单的实现了内存分页,每次翻页都会查询一次数据库,虽然查询数据库的次数增加了,但是对于大list来说,能够节省不少内存空间。
相关推荐
Linux内存分页机制原理
java内存分页 内存分页工具类 * 使用场景:多个查询结果组合后分页的情况 * 1、endNum置为上限,查分页(最大限度可查) * 2、不分页查询,用上限判断(超过上限给提示不能查) * 注意:需要分页的全量数据要...
目的:(1)通过编写程序实现请求分页存储管理页面Optimal、FIFO、LRU调度算法,使学生掌握虚拟存储管理中有关缺页处理方法等内容,巩固有关虚拟存储管理的教学内容。 (2)了解Windows2000/XP中内存管理机制,掌握...
06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo06实现mybatis分页插件demo...
mybatis 分页代码 基于内存分页 有需要的同学看看吧
通过VC++将操作系统的内存分页机制呈现在你的面前,赶快下载吧!
java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页
struts2.0实现的数据分页实现及实现分页步骤,
jQuery实现Table分页跳转,JQUERY实现TABLE分页效果
C#编写的模拟操作系统虚拟内存分页请求管理 计算机操作系统第三版 汤小丹等编著 根据课本算法流程编写 原创
一个POI导出Excel万级数据分页实现 解决内存溢出问题 完整的 project demo 有数据库dmp文件
模拟内存分页,从制定的文件中读取内容并分页,可以自由选择查看的页码,增加或编辑内容等等。。。。。。。
mysql数据库实现的分页javaWEB开发实现 实现分页实例
可以实现横向分页和纵向分页,主要用的是安卓原生实现
用struts实现的分页
很明显横向滑动的分页,第一反应就是使用ViewPager,毕竟只要通过自定义ViewPager,实现这个效果还是很容易,但是实际中问题时,当前模块是Recyclerview中某一个Holder,为了性能,肯定尽量使用Recyclerview去复用...
使用JS的Window对象的Print方法实现兼容性强的分页打印功能,可直接运行,代码直接复制即可用。
内存字节占用日志监控:用于内存分页等大对象场景预测,防止堆栈溢出; * 内存分页工具类 * 使用场景:多个查询结果组合后分页的情况 * 1、endNum置为上限,查分页(最大限度可查) * 2、不分页查询,用上限判断...
java实现oracle分页策略完整版,可当做参考类使用,有详细注释,适合初学者。