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

Ecside 基于数据库端分页——AbstractQueryForPagedListAction

阅读更多
此类是基于iBatis数据库端访问组件的抽象Action类
只需继承该Action实现3个方法即
==========================================

import java.io.IOException;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.ecside.table.limit.Limit;
import org.ecside.table.limit.Sort;
import org.ecside.util.RequestUtils;

import com.fp.zyyw.util.SpringHelper;
import com.ibatis.sqlmap.client.SqlMapClient;

public abstract class AbstractQueryForPagedListAction extends Action {

int DEFAULT_PAGESIZE = 20;

protected String sqlMapStringForList = null;

protected String sqlMapStringForTotalSize = null;

private static final Logger logger = Logger
.getLogger(AbstractQueryForPagedListAction.class);

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
String target = "success";
try {
setSqlMapStringForList();
setSqlMapStringForTotalSize();
Limit limit = RequestUtils.getLimit(req);

Sort sort = limit.getSort();

Map map = new HashMap();
setQueryCondition(map, form, req);
int totalSize = queryForPagedListTotalSize(map);
logger.debug("totalSize = " + totalSize);
limit.setRowAttributes(totalSize, DEFAULT_PAGESIZE);

String to = String.valueOf(limit.getRowEnd());
String from = String.valueOf(limit.getRowStart());
logger.debug("to = " + to);
logger.debug("from = " + from);
System.out.println("from = " + from + " to = " + to);
map.put("to", to);
map.put("from", from);

setQueryOrder(map, sort);

req.setAttribute("recordList", queryForPagedList(map));

} catch (Exception e) {
e.printStackTrace();
logger.error(e);
String errMsg = "查询异常";
target = "error";
req.setAttribute("errMsgType", "USER");
req.setAttribute("errMsg", errMsg);
}
return mapping.findForward(target);
}

public abstract void setSqlMapStringForList();

public abstract void setSqlMapStringForTotalSize();

public abstract void setQueryCondition(Map param, ActionForm form,
HttpServletRequest req);

public List queryForPagedList(Map param) throws SQLException {
SqlMapClient sqlMapClient = (SqlMapClient) SpringHelper.getBean("sqlMapClient");
List list = sqlMapClient.queryForList(this.sqlMapStringForList, param);
sqlMapClient.getCurrentConnection().close();
return list;
}

public int queryForPagedListTotalSize(Map param) throws SQLException {
SqlMapClient sqlMapClient = (SqlMapClient) SpringHelper
.getBean("sqlMapClient");
BigDecimal totalSize = (BigDecimal) sqlMapClient.queryForObject(
this.sqlMapStringForTotalSize, param);
sqlMapClient.getCurrentConnection();
return totalSize.intValue();
}

public void setQueryOrder(Map param, Sort sort) {
if (sort != null && sort.getSortValueMap() != null
&& !sort.getSortValueMap().isEmpty()) {
String orderByClause = sort.getProperty() + " "
+ sort.getSortOrder();
param.put("orderByClause", orderByClause);
}
}

}
分享到:
评论

相关推荐

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

    当数据量较大时,ECSide提供了基于数据库层的实现方式。在这个模式下,ECSide负责展示数据,但你需要处理RSF相关的参数,并在DAO中构建相应的SQL语句。具体步骤如下: 1. 查询所需数据的数量。 2. 获取ECSide提供的...

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

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

    基于数据库查询分页技术

    ### 基于数据库查询分页技术的知识点详解 #### 一、引言 随着互联网技术的迅猛发展,Web应用程序已成为人们日常生活中不可或缺的一部分。在这些应用中,往往需要从数据库中读取大量数据,并以适当的方式展示给用户...

    mysql数据库实现分页

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

    常用数据库sql分页

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

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

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

    Qt数据库分页显示

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

    jsf分页——详细源码 测试通过

    这个"jsf分页——详细源码 测试通过"的压缩包文件提供了一个实现JSF分页功能的详细源代码,且经过了测试验证其有效性和可靠性。 JSF是一种Java web应用程序的组件模型框架,它允许开发人员使用可重用的UI组件来构建...

    Qt编写的数据库分页demo

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

    大工论文 基于Web的分页技术的研究与实现.docx

    基于Web的分页技术的研究与实现 在当今的信息时代,网络已经成为我们生活中不可或缺的一部分,而网页则成为我们获取信息的主要来源。当我们在浏览网页时,不可避免地会碰到有的数据不能在一个页面完全显示出来的...

    PHP结合数据库实现分页

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

    asp对access数据库简单分页

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

    初识通用数据库操作类——前端easyui-datagrid,form(php)

    easyui-datagrid是基于jQuery EasyUI框架的一个组件,它可以用来在前端页面上展示表格形式的数据。其特点包括支持分页、排序、远程数据加载等功能。文件描述中提到的easyui-datagrid组件能够左侧显示简略信息,右侧...

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

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

    Ibatis 2.3.4 数据库无关分页

    在2.3.4这个版本中,Ibatis 提供了数据库无关的分页功能,这是一种在不依赖特定数据库语法的情况下实现分页查询的方法,有助于提高代码的可移植性和维护性。 数据库无关分页的核心思想是将分页参数(如当前页数和每...

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

    "JS-数据库page分页样式.rar" 提到的正是关于JavaScript实现的数据库数据分页功能及相应的样式设计。下面我们将深入探讨这一主题。 首先,我们需要理解什么是数据分页。数据分页是将一个大的数据集分割成多个较小的...

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

    综上所述,基于MVC模式的数据库分页显示,不仅解决了大量数据的高效显示问题,还通过分离关注点提高了代码的可维护性和复用性。通过数据库连接池和数据封装,进一步优化了性能和资源管理。这种设计方法在实际的电子...

    各数据库分页语法支持

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

    java连接数据库的分页语句

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

Global site tag (gtag.js) - Google Analytics