`
leopard_lb
  • 浏览: 40522 次
  • 性别: Icon_minigender_1
  • 来自: 太原
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

通用数据库分页方案

阅读更多
技术架构:
web层可以是任意的MVC框架,目前只实现了SpringMVC和Struts的版本(Struts版已经在weblogic7下跑通,tomcat5还不行);
dao层也没有任何限制,只要按照范例中的模式来做既可;
最终页面上用一个标签来显示翻页按钮等。
btw:谁有兴趣想写个webwork版本的,可以和我联系,或直接发个patch给我
---------------------------------
工作原理:想法很简单,就是应用设计模式里的"模板方法模式",把分页计算的逻辑封装在一个抽象父类(PagingController)里面,留下三个抽象方法:doHandleRequest(处理请求)、getTotalRecordsNumber(计算总记录数)、makeSearchCriteria(构造查询条件,可选)供子类型重写,使得子类型尽量的简单,让我们可以专注于业务逻辑而不需要处理分页逻辑。示例如下:
代码
  1. public class UserPagingController extends PagingController {   
  2.     private final Logger logger = Logger.getLogger(this.getClass());   
  3.     private UserDAO userDAO;   
  4.     protected ModelAndView doHandleRequest(HttpServletRequest request,   
  5.             HttpServletResponse response) throws Exception {   
  6.         Map map = super.getSearchCriteria(request);   
  7.         int beginNo = super.computeRecordsBeginNo(request);   
  8.         int recordsNumber = super.computeRecordsNumberToRead(request);   
  9.         List usersList = userDAO.findUsers(map, beginNo, recordsNumber);   
  10.         logger.debug(usersList);   
  11.         return new ModelAndView("usersList""usersList", usersList);   
  12.     }   
  13.     protected int getTotalRecordsNumber(HttpServletRequest request) {   
  14.         int result = userDAO.countUsers(super.getSearchCriteria(request));   
  15.         logger.debug("users number================:" + result);   
  16.         return result;   
  17.     }   
  18.     protected Map makeSearchCriteria(HttpServletRequest request) {   
  19.         HashMap map = new HashMap();   
  20.         String firstName = request.getParameter("firstName");   
  21.         if (firstName != null && firstName.trim().length() > 0) {   
  22.             map.put("firstName", firstName);   
  23.         }   
  24.         logger.debug(map);   
  25.         return map;   
  26.     }   
  27.     public void setUserDAO(UserDAO userDAO) {   
  28.         this.userDAO = userDAO;   
  29.     }   
  30. }  
<script>render_code();</script>
Struts版原理相同。
在页面显示翻页链接只需一行代码:
代码
  1. <page:pagebar url="/user_query.html?" bordercolor="#F4F9FF" bgcolor="#F4F9FF"/>  
分享到:
评论

相关推荐

    通用数据库分页 扩展dbutil (附代码下载)

    本主题将深入探讨“通用数据库分页”以及如何通过扩展dbutil工具来实现这一功能。我们将从以下几个方面展开讨论: 1. **数据库分页原理**: 数据库分页的基本思想是将数据分成若干个页,每次只返回用户请求的一页...

    基于MVC模式的数据库分页显示

    【数据库分页显示】在开发WEB应用系统时,特别是面对大量数据时,分页显示是一项重要的优化技术。它避免一次性加载所有数据导致的性能下降和用户体验不佳。在MySQL数据库中,可以使用`LIMIT`关键字进行分页,例如`...

    StrutsCode[数据库分页]

    StrutsCode[数据库分页] 是一个基于Struts框架实现的数据库分页功能的示例项目。在Web开发中,数据库分页是提高用户体验的重要手段,尤其在处理大量数据时,它能让用户更加高效地浏览和查找所需信息。Struts作为一款...

    Oracle通用数据库存储过程代码--高效分页存储过程

    ### Oracle通用数据库存储过程代码——高效分页存储过程解析 #### 标题解析 标题“Oracle通用数据库存储过程代码——高效分页存储过程”表明这是一个适用于Oracle数据库的存储过程,主要用于实现高效的分页查询功能...

    超强php分页打包 通用分页 万能分页 ajax分页 google分页

    本压缩包“超强php分页打包 通用分页 万能分页 ajax分页 google分页”提供了一系列的分页解决方案,包括了基本的PHP分页、通用的分页实现、以及结合AJAX技术的动态分页,旨在满足各种项目需求。下面将详细介绍这些...

    资料种数据库分页技术.pdf

    在选择分页方案时,需考虑效率和通用性。根据资料内容,分页方案二(利用ID大于多少和`SELECT TOP`分页)的效率最高,但需要动态拼接SQL;方案一(利用`NOT IN`和`SELECT TOP`分页)次之,同样需要拼接SQL;方案三...

    3种数据库分页技术.pdf

    数据库分页技术是数据库管理系统中用于处理大量数据查询时,以分批次的方式返回结果集的一种策略,这有助于提高用户体验并减少服务器的负载。本文将详细探讨三种常见的分页技术,适用于MySQL、SQL Server 2000/2005 ...

    (四)struts2- 2.3.15.3 spring3.2.4 mybatis-3.2.3 通用分页(不同数据库) 拦截器(2014-01-27 17:16)

    总的来说,这个项目展示了如何在Java Web环境中,利用Struts2、Spring和MyBatis三大框架,构建一个具备通用分页和拦截器功能的应用,为开发者提供了跨数据库的分页解决方案。通过学习和理解这个示例,开发者可以更好...

    archive_ PHP+mysql数据库分页类万能版附源码及数据库下载 v2 [江西新余电信].zip.zip

    标题中的"PHP+mysql数据库分页类万能版"是一个基于PHP编程语言和MySQL数据库的分页类库,它提供了一种通用的解决方案,适用于各种数据检索场景,以实现高效、灵活的页面数据加载。这类分页类通常包括对SQL查询的处理...

    Struts+Spring+Hibernate通用分页解决方案

    "Struts+Spring+Hibernate通用分页解决方案"是针对基于这三大框架(Struts、Spring、Hibernate)的Java Web应用所设计的一种高效且可复用的分页策略。以下是关于这个主题的详细解释: 1. **Struts框架**:Struts是...

    jsp通用分页

    因此,更好的做法是结合数据库的分页功能和JDBC的滚动结果集特性,设计出既能满足性能要求又具有良好扩展性的分页解决方案。 在实际开发中,可以创建一个分页工具类,封装分页查询的逻辑,接受SQL语句、当前页数、...

    java通用分页代码实例.rar

    这个"java通用分页代码实例"提供了一种适用于任意数据库的解决方案,具有高可移植性和易用性。 分页的核心在于对数据库查询结果进行分割,只返回当前页面所需的数据,同时提供翻页链接或按钮,允许用户浏览更多的...

    JDBC简单分页方案

    网络上有一种通用的JDBC分页方案,它创建了一个名为`ResultSetWithPage`的新接口,该接口继承自`ResultSet`并添加了分页相关的方法,如`getPageSize()`, `getCountOfPages()`, `getCountOfRows()`, `nextPage()`, `...

    通用PHP分页组件

    通用PHP分页组件是一种高效的解决方案,它解决了在网站开发中处理大量数据时的分页问题。在网页上显示所有数据可能会导致页面加载速度慢,用户体验下降,因此分页成为了一个必要的设计元素。这个PHP分页组件的核心...

    Mybatis通用分页插件

    Mybatis通用分页插件能自动识别并适配这些差异,为开发者提供了一种跨数据库的分页解决方案。 安装和使用Mybatis通用分页插件相对简单。首先,需要将PageHelper库添加到项目依赖中,通常通过Maven或Gradle管理。...

    PHP通用分页程序

    这个程序提供了灵活的分页解决方案,其核心功能包括: - **配置参数**:允许设置每页显示的记录数、默认页码等。 - **计算总页数**:根据数据库查询结果自动计算总页数。 - **动态SQL生成**:根据当前页数生成...

    通用分页完整版提供下载

    通用数据分页是指设计一个可复用的分页解决方案,适用于不同的数据源和业务场景。在这个压缩包文件中,我们可以找到一个基于Java OOP(面向对象编程)实现的通用数据分页示例。 首先,让我们深入理解Java OOP在数据...

    asp通用分页

    ASP(Active Server Pages)是一种微软...通过对这个文件的深入理解和学习,你可以掌握如何在ASP环境中实现一个高效的通用分页解决方案。不过,要注意文件可能还在优化过程中,可能需要根据实际需求进行调整和测试。

    c#分页方案

    - **分页方案三**(利用SQL的游标存储过程分页)虽然通用性好,但性能最差。 在选择分页方案时,应根据具体的应用场景和数据特点进行综合考量。例如,在数据量较大且ID已有序的情况下,优先考虑分页方案二;而对于...

    hibernate通用分页

    "hibernate通用分页"就是为了解决这一问题,提供一个方便、易用的分页解决方案。 分页的核心在于如何根据用户请求的数据范围(如页码和每页显示条数)来查询数据库,并返回相应的结果集。在Hibernate中,我们可以...

Global site tag (gtag.js) - Google Analytics