`

Ibatis的Oracle分页组件

 
阅读更多

使用示例

即使用ibatis提供的queryForList(sql, param, skipped, maxResults) API即可

        /**
         @param page 页码
         @param pageSize 一页最多多少记录
        */
	public List<Object> paginationTest(int page, int pageSize)
			throws DAOException {
                //参数
		HashMap<String,String> m = new HashMap<String, String>();
		m.put("p1", "test1");
		m.put("p2", "test2");
 
		if(page < 1)  //page 为第几页,从 1 开始
			page = 1; 
		int offset = (page - 1) * pageSize; //计算起始位置, 从0开始
 
		//从第offset条记录开始取数,最多取pageSize条记录(单页记录数); offset从0开始
		return getSqlMapClientTemplate().queryForList("paginationTest", m ,offset, pageSize);
	}

biz-context.xml中:

    <!-- 
    	给指定的sqlMapClient添加Oracle分页实现,允许通过DAO的sqlMapClientTemplate.queryForList(sql,bizObj,offset,limit)方法
    	进行分页查询,从而无需自己拼装rownum条件做分页
    	Need JTFA 2.4.0+
     -->
	<bean id="ibatisPageInitializer" class="com.ejintai.fa.app.integration.page.IbatisPageInitializer">
	  <property name="sqlMapClient" ref="sqlMapClient" />
	</bean>
package com.ejintai.fa.app.integration.page;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.engine.execution.SqlExecutor;
import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
import com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate;
import java.lang.reflect.Field;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.util.ReflectionUtils;
public class IbatisPageInitializer
  implements InitializingBean
{
  protected Logger logger = Logger.getLogger(IbatisPageInitializer.class);
  private SqlExecutor sqlExecutor;
  private SqlMapClient sqlMapClient;
  public SqlExecutor getSqlExecutor()
  {
    return this.sqlExecutor;
  }
  public void setSqlExecutor(SqlExecutor sqlExecutor) {
    this.sqlExecutor = sqlExecutor;
  }
  public SqlMapClient getSqlMapClient() {
    return this.sqlMapClient;
  }
  public void setSqlMapClient(SqlMapClient sqlMapClient) {
    this.sqlMapClient = sqlMapClient;
  }
  private void initialize()
    throws Exception
  {
    if ((this.sqlExecutor != null) && (this.sqlMapClient != null))
    {
      if ((this.sqlMapClient instanceof ExtendedSqlMapClient)) {
        Field field = SqlMapExecutorDelegate.class.getDeclaredField("sqlExecutor");
        ReflectionUtils.makeAccessible(field);
        ReflectionUtils.setField(field, ((ExtendedSqlMapClient)this.sqlMapClient).getDelegate(), this.sqlExecutor);
        this.logger.info("成功替换" + this.sqlMapClient + "的SqlExecutor为:" + this.sqlExecutor);
      } else {
        this.logger.info("未替换" + this.sqlMapClient + "的SqlExecutor");
      }
    }
  }
  protected SqlExecutor getDefaultSqlExecutor()
  {
    return new OracleIbatisPageSqlExecutor();
  }
  public void afterPropertiesSet()
    throws Exception
  {
    if (this.sqlMapClient == null) {
      throw new IllegalArgumentException("IbatisPageInitializer.sqlMapClient can not be null.");
    }
    if (this.sqlExecutor == null) {
      this.sqlExecutor = getDefaultSqlExecutor();
      this.logger.info("Ibatis使用默认的Oracle分页SQL执行器实例");
    }
    initialize();
  }
}
分享到:
评论

相关推荐

    spring+ibatis+oracle分页缓存源码

    总的来说,"spring+ibatis+oracle分页缓存源码"项目展示了如何在Spring管理的环境中,利用iBatis和Oracle数据库实现高效的数据分页和缓存策略。通过理解和实践这些技术,开发者可以构建出更加健壮、响应快速的Web...

    struts2+spring+ibatis+oracle+分页搜索+上传附件实例

    Struts2、Spring、iBatis以及Oracle是Java Web开发中的四大核心组件,它们共同构建了一个强大且灵活的后端架构。在这个实例中,我们将会深入探讨这些技术如何协同工作,实现分页搜索功能和上传附件操作。 1. **...

    对IBatis分页的改进,使ibatis支持hibernate式的物理分页.doc

    在传统的iBatis框架中,分页通常采用逻辑分页的方式,即通过游标(ResultSet)来逐条处理数据,从而实现分页效果。这种方式虽然跨数据库兼容性好,但性能上不如数据库原生的物理分页高效。物理分页是直接在SQL语句中...

    ssi_struts2_spring_ibatis 增删改查分页

    这三个组件是企业级Java应用中的常见选择,它们各自承担着不同的职责。 1. **Struts2**:这是一个用于构建MVC(模型-视图-控制器)架构的开源框架。它负责处理HTTP请求,提供动作调度,以及处理表单提交和结果转发...

    ibatis.net

    Ibatis.Net的核心组件包括以下几点: 1. SQL Maps:这是XML配置文件,定义了SQL语句以及如何将结果集映射到.NET对象。它们包含了SQL查询、存储过程的调用,并可以进行动态SQL构建。 2. Data Mapper:这是一个接口...

    javaweb_分页显示数据库内容

    在 Java Web 应用程序中,分页功能可以使用多种方法来实现,例如使用 Hibernate、iBATIS 等 ORM 工具来实现分页,或者使用自定义的分页算法来实现分页。无论是哪种方法,分页都是 Java Web 应用程序中的一个重要组件...

    struts1.2+batis+spring2.0+oracle10g集成例子(增加了分页功能)

    这是一个基于老旧技术栈的Web应用集成示例,主要包括Struts1.2、iBatis(现为MyBatis)和Spring2.0框架,以及Oracle10g数据库。这个项目可能是一个初学者为了学习和实践这些技术而创建的,特别加入了分页功能,以...

    jqgrid+struts2+ibatis增删改查

    首先,jqGrid是基于jQuery的前端组件,提供了丰富的表格功能,包括数据的分页、排序、搜索和过滤。它支持JSON、XML和CSV等多种数据格式,使得与服务器端的数据交互变得简单。在jqGrid中,通过配置列模型、数据源以及...

    图书管理系统EXT+ibatis

    例如,EXT的GridPanel可以用于显示图书列表,具备排序、分页、过滤等功能;FormPanel则用于处理用户输入,如添加新图书或修改现有记录。 ibatis作为后台的持久层框架,是连接数据库的关键。它通过XML配置文件或注解...

    dms.rar_easyui java_easyui-datagrid_jeasyui ibatis_jquery-easyui

    "自动分页"是EasyUI Datagrid的一个特性,能够处理大量数据并提高前端性能。"ETMV"可能是指Enterprise Template Model View,一种设计模式,用于简化前后端交互。 标签中的"easyui-java"表示项目使用了EasyUI与Java...

    大数据功能模块概要设计_V1.1.pdf

    这些组件提供了基础的页面元素,如图表组件、在线编辑器、文件上传、表单验证、列表框、日期组件、进度条、对话框、按钮、分页网格、树形视图、菜单、选项卡、表单提交、下拉框等。此外,还有任务调度组件如quartz,...

    大数据功能模块概要设计-V1.1Word版.docx

    - **基础技术组件**:包括任务调度、验证、分页、字典组件、缓存、日志、FTP、导入导出、异步操作等。其中,字典组件需自定义标签库以提高开发效率,而缓存可能通过缓存组件进行存储管理。 - **基础类库**:如...

    大数据功能模块概要设计.doc

    2.2 **基础技术组件**:任务调度可选用quartz,验证可使用struts2框架,分页通常需要自定义开发并与ORM层适配。字典组件需自定义开发并配合缓存组件如slf4j + log4j。日志管理和FTP操作也需自主实现。导入导出支持...

    ibator的eclipse插件

    - `org.apache.ibatis.ibator.eclipse.ui_1.2.1`: 这是ibator的Eclipse用户界面组件,提供了图形化的操作界面。 - `ibator`: 可能包含ibator的库文件或其他依赖项。 - `org.apache.ibatis.ibator.core_1.2.1`: ...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    &lt;br&gt; &lt;br&gt;下面三张表格罗列的测试数据,可以明显看出AppFramework数据库访问组件的性能全面超越了IBatisNet: &lt;br&gt; &lt;br&gt;表I –10并发20循环(数据库和测试机分开) &lt;br&gt;对比项目 iBatis2.0 ...

    JAVA WEB典型模块与项目实战大全

    第13章 网络留言板续——oracle数据库  13.1 连接数据库——idbc驱动程序  13.2 数据库连接池  13.3 commons dbutils组件  13.4 小结  第14章 ajax技术jquary框架的经典应用  14.1 jquery框架的简单...

    SSI框架的一个简单小项目.pdf

    SSI框架,即Struts2+Spring+Ibatis的集成框架,是Java Web开发中的常用组合,它通过整合这三个强大的组件,为开发者提供了高效且灵活的开发环境。本篇文章将围绕如何利用SSI框架构建一个简单的小项目展开,介绍项目...

    AppFramework_V1.0

    &lt;br&gt; &lt;br&gt;下面三张表格罗列的测试数据,可以明显看出AppFramework数据库访问组件的性能全面超越了IBatisNet: &lt;br&gt; &lt;br&gt;表I –10并发20循环(数据库和测试机分开) &lt;br&gt;对比项目 iBatis2.0...

    酒店客房管理系统(毕业设计) struts + spring + ibaits2.0

    `export.dat`通常是自定义格式的数据导出,而`.dmp`文件通常与Oracle数据库的导出有关,用于备份数据库对象和数据。 该系统可能包括以下功能模块: - 客户管理:登记、查询、修改客户信息。 - 房间管理:房间类型、...

Global site tag (gtag.js) - Google Analytics