`
8366
  • 浏览: 807061 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ecside 数据库层分页解决方案

阅读更多

 

       项目中使用到了ecside,不过没有使用到分页技术,每次都是吧数据库所有的记录给查出来,放到request对象中,然后ecside展示,前台的ecside拿到了request对象中的数据list,根据页面上用户选择的每页显示巨鹿数目,计算出一共多少页,比如记录有10页,当前是第一页,你点第二页,ecside也是在去查一下数据库,把所有的记录找出来,根据每页显示的记录数目,计算出第二页显示的数据记录的起止位置,然后在页面上显示,当数据量巨大的时候,不使用分页就会出现OOM的问题,以下是ecside基于数据库分页的一个简单实现,每次按需取数据,不管记录再多,也不会OOM

 

 

     准备工作:

 

 

1. ecsise 2.0 相关jar包+Mysql 数据库环境+struts

2.在mysql 中建立一个表

CREATE TABLE `user` (                
          `name` varchar(20) NOT NULL,       
          `age` varchar(20) NOT NULL,        
          `sex` char(30) DEFAULT NULL,       
          `pw` char(30) DEFAULT NULL,        
          `time` datetime DEFAULT NULL       
        ) ENGINE=InnoDB DEFAULT CHARSET=gbk 

 

目标:user表中有11条数据,使用数据库层分页技术,每次都按需取数据

 

 

分析:ecside展示数据的时候需要吧记录的list放到request中,讲记录的总数也放到request对象中,因此,我们只需要在页面上得到,当前的页码,用户选择的页面上记录显示的数目,在数据库层使用mysql的 limit 就可以构造出分页sql了

 

 

解决方案:(关键步骤)

 

a.使用 RequestUtil.getPageNo(request) 得到当前的页码

b.使用 RequestUtil.getCurrentRowsDisplayed(request) 得到 页面上显示的记录的数目

 

MYSql 的limit的用法:

 

在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

        LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15

//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.

//如果只给定一个参数,它表示返回最大的记录行数目:
mysql> SELECT * FROM table LIMIT 5;     //检索前 5 个记录行

//换句话说,LIMIT n 等价于 LIMIT 0,n。

 

 

c. 使用 select * from user order by time desc limit 2,4 使用类似的sql得到分页记录,如果是oracle可以使用一个子查询,并使用rownum

 

d. 构造结果对象 ResultObject

 

package cn.com.xinli.bean;
import java.io.Serializable;
import java.util.ArrayList;
public class ResultObject implements Serializable
{
	/**
	 * 分页查询结果集对象
	 * count 不分页查询所有的结果集的数目(从数据库select count(1) from user)
	 * list 页面上需要显示的分页后的记录list
	 */
	
	int count;
	
	ArrayList list=new ArrayList ();

	public int getCount()
	{
		return count;
	}

	public void setCount(int count)
	{
		this.count = count;
	}

	public ArrayList getList()
	{
		return list;
	}

	public void setList(ArrayList list)
	{
		this.list = list;
	}
}

 

 

e.告诉ecside 总的记录数目,和需要展示的 数据的list

  request.setAttribute("totalRows",ro.getCount()); 
  request.setAttribute("recordList",ro.getList()); 

 

 

 

f. 在页面上 ectable 中使用 retrieveRowsCallback="limit" 代表分页机制是 数据库层分页

 

 

完整的实现见附件,你只需要

1.修改 conf.properties 中的数据库连接参数

2.建立一个user表

3.部署在tomcat中,访问 http://localhost:9090/ecside/test.jsp

 

效果:

 

 

 

分享到:
评论
2 楼 南通ori 2011-05-10  
额,我错了。。。网络原因下的东西有残缺,重下就OK了。。。。
1 楼 南通ori 2011-05-10  
大哥,你发的是残疾代码啊。。。。。求源码。。。。

相关推荐

    ECSide基于数据库的分页、排序、过滤

    【ECSide数据库分页、排序与过滤详解】 ECSide是一个用于Web应用程序的数据展示工具,它提供了便捷的方式来实现数据库中的数据分页、排序和过滤(简称RSF)功能。对于初学者而言,理解ECSide的工作原理和使用方法...

    数据库分页数据库分页数据库分页数据库分页

    - 定期对数据库进行性能监控,及时发现并解决瓶颈问题,确保系统的稳定运行。 #### 六、总结 数据库分页技术是提高数据查询效率、优化用户体验的关键技术之一。通过合理选择分页策略、优化查询逻辑以及利用先进的...

    Java SE程序 连接数据库的分页

    Java SE程序 连接数据库的分页Java SE程序 连接数据库的分页Java SE程序 连接数据库的分页Java SE程序 连接数据库的分页Java SE程序 连接数据库的分页Java SE程序 连接数据库的分页Java SE程序 连接数据库的分页Java...

    mysql数据库实现分页

    在MySQL数据库中,分页是处理大量数据查询时不可或缺的一种技术。它允许用户按需加载数据,而不是一次性获取所有记录,从而提高了用户体验并降低了服务器负载。以下是对分页实现的详细说明: 一、基础概念 分页是将...

    常用数据库sql分页

    数据库SQL分页技术 数据库分页是指从大规模的数据集中提取指定的记录数,以减少数据传输量,提高应用程序的性能和用户体验。常见的数据库管理系统包括MySQL、SQL Server、Oracle、DB2等,每种数据库管理系统都有其...

    orcl数据库分页源码通过数据库实现分页

    在IT行业中,数据库分页是一种常见的数据检索策略,特别是在处理大量数据时,它能有效地提高应用性能并优化用户体验。Oracle(ORCL)数据库是企业级广泛使用的数据库管理系统,提供了强大的分页功能。本文将深入探讨...

    Ibatis 2.3.4 数据库无关分页

    总结一下,Ibatis 2.3.4的数据库无关分页特性提供了一种跨数据库的分页解决方案,通过动态SQL和参数传递,使得分页逻辑独立于具体的数据库方言。这种方式提高了代码的可复用性和可维护性,也降低了系统迁移的成本。...

    Qt数据库分页显示

    本教程将深入探讨如何在Qt应用中实现SQLite数据库的数据分页显示。 首先,我们需要在Qt项目中集成SQLite数据库支持。在Qt Creator中,新建一个Qt Widgets Application项目,然后在.pro文件中添加`QT += sql`来启用...

    Qt编写的数据库分页demo

    **Qt编写的数据库分页demo**是一个用于展示如何在Qt应用程序中实现高效、用户友好的数据库数据分页功能的示例项目。这个demo的核心在于它能够处理大量的数据,如千万级记录,同时提供流畅的用户体验,包括上一页、...

    海量数据分页解决方案_demo

    总的来说,"海量数据分页解决方案"的实现涉及数据库优化、存储过程设计以及与应用程序的接口协调。通过"proc_page_demo",我们可以学习到如何在实际项目中运用存储过程来高效地处理大数据分页问题,从而提升系统的...

    PHP结合数据库实现分页

    PHP结合数据库,实现分页功能

    各数据库分页语法支持

    ### 各数据库分页语法支持 #### 概述 在数据库操作中,分页查询是一项非常常见的需求。分页能够帮助我们有效地管理大量的数据记录,提高数据查询的效率和用户体验。不同的数据库系统提供了不同的分页机制,本文将...

    jsp 实现数据库数据分页显示

    只要通过JDBC连接上数据库 获得Connection 对象 套上此模板就可实现数据库数据分页机制……

    独立的跨数据库的分页

    但是,如果项目中没有使用ORM框架,或者需要更底层的控制,我们可以创建一个数据库访问层(DAL),该层封装了对各个数据库的分页查询。这个DAL可以包含一个接口,定义通用的分页方法,然后为每种数据库实现具体的...

    JS-数据库page分页样式.rar

    在网页开发中,数据分页是一种常见的用户界面技术,它用于处理大量数据的展示,避免一次性加载所有数据导致页面响应速度变慢或者...实际应用中,开发者需要根据项目需求选择合适的分页方案,确保数据的高效加载和展示。

    asp对access数据库简单分页

    在ASP(Active Server Pages)开发中,访问Access数据库并实现分页是常见的需求,尤其是在处理大量数据时,分页能够显著提升网页加载速度和用户体验。本文将深入探讨如何使用ASP和Access数据库进行简单的分页。 ...

    易语言MYSQL数据库分页查询

    在IT领域,数据库操作是至关重要的,特别是在处理大量数据时,分页查询是提高系统性能、优化用户体验的有效手段。易语言作为一款中国本土化的编程语言,提供了与MySQL数据库交互的能力,使得开发者能够轻松实现...

    Android开发之数据库的分页查询代码

    在Android应用开发中,数据库是数据存储的重要方式,特别是在处理大量数据时,为了提高用户体验,分页查询就显得尤为重要。本篇文章将详细讲解如何在Android中实现数据库的分页查询功能,以高效、流畅地加载和展示...

    java连接数据库的分页语句

    Java 连接数据库的分页语句 Java 连接数据库的分页语句是 Java 编程语言中连接数据库并实现分页的语句。分页是指将数据库中的数据分成多页,以便更好地展示和管理数据。Java 连接数据库的分页语句主要包括连接 ...

Global site tag (gtag.js) - Google Analytics