即使用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数据库实现高效的数据分页和缓存策略。通过理解和实践这些技术,开发者可以构建出更加健壮、响应快速的Web...
Struts2、Spring、iBatis以及Oracle是Java Web开发中的四大核心组件,它们共同构建了一个强大且灵活的后端架构。在这个实例中,我们将会深入探讨这些技术如何协同工作,实现分页搜索功能和上传附件操作。 1. **...
在传统的iBatis框架中,分页通常采用逻辑分页的方式,即通过游标(ResultSet)来逐条处理数据,从而实现分页效果。这种方式虽然跨数据库兼容性好,但性能上不如数据库原生的物理分页高效。物理分页是直接在SQL语句中...
这三个组件是企业级Java应用中的常见选择,它们各自承担着不同的职责。 1. **Struts2**:这是一个用于构建MVC(模型-视图-控制器)架构的开源框架。它负责处理HTTP请求,提供动作调度,以及处理表单提交和结果转发...
Ibatis.Net的核心组件包括以下几点: 1. SQL Maps:这是XML配置文件,定义了SQL语句以及如何将结果集映射到.NET对象。它们包含了SQL查询、存储过程的调用,并可以进行动态SQL构建。 2. Data Mapper:这是一个接口...
在 Java Web 应用程序中,分页功能可以使用多种方法来实现,例如使用 Hibernate、iBATIS 等 ORM 工具来实现分页,或者使用自定义的分页算法来实现分页。无论是哪种方法,分页都是 Java Web 应用程序中的一个重要组件...
这是一个基于老旧技术栈的Web应用集成示例,主要包括Struts1.2、iBatis(现为MyBatis)和Spring2.0框架,以及Oracle10g数据库。这个项目可能是一个初学者为了学习和实践这些技术而创建的,特别加入了分页功能,以...
首先,jqGrid是基于jQuery的前端组件,提供了丰富的表格功能,包括数据的分页、排序、搜索和过滤。它支持JSON、XML和CSV等多种数据格式,使得与服务器端的数据交互变得简单。在jqGrid中,通过配置列模型、数据源以及...
例如,EXT的GridPanel可以用于显示图书列表,具备排序、分页、过滤等功能;FormPanel则用于处理用户输入,如添加新图书或修改现有记录。 ibatis作为后台的持久层框架,是连接数据库的关键。它通过XML配置文件或注解...
"自动分页"是EasyUI Datagrid的一个特性,能够处理大量数据并提高前端性能。"ETMV"可能是指Enterprise Template Model View,一种设计模式,用于简化前后端交互。 标签中的"easyui-java"表示项目使用了EasyUI与Java...
这些组件提供了基础的页面元素,如图表组件、在线编辑器、文件上传、表单验证、列表框、日期组件、进度条、对话框、按钮、分页网格、树形视图、菜单、选项卡、表单提交、下拉框等。此外,还有任务调度组件如quartz,...
- **基础技术组件**:包括任务调度、验证、分页、字典组件、缓存、日志、FTP、导入导出、异步操作等。其中,字典组件需自定义标签库以提高开发效率,而缓存可能通过缓存组件进行存储管理。 - **基础类库**:如...
2.2 **基础技术组件**:任务调度可选用quartz,验证可使用struts2框架,分页通常需要自定义开发并与ORM层适配。字典组件需自定义开发并配合缓存组件如slf4j + log4j。日志管理和FTP操作也需自主实现。导入导出支持...
- `org.apache.ibatis.ibator.eclipse.ui_1.2.1`: 这是ibator的Eclipse用户界面组件,提供了图形化的操作界面。 - `ibator`: 可能包含ibator的库文件或其他依赖项。 - `org.apache.ibatis.ibator.core_1.2.1`: ...
<br> <br>下面三张表格罗列的测试数据,可以明显看出AppFramework数据库访问组件的性能全面超越了IBatisNet: <br> <br>表I –10并发20循环(数据库和测试机分开) <br>对比项目 iBatis2.0 ...
第13章 网络留言板续——oracle数据库 13.1 连接数据库——idbc驱动程序 13.2 数据库连接池 13.3 commons dbutils组件 13.4 小结 第14章 ajax技术jquary框架的经典应用 14.1 jquery框架的简单...
SSI框架,即Struts2+Spring+Ibatis的集成框架,是Java Web开发中的常用组合,它通过整合这三个强大的组件,为开发者提供了高效且灵活的开发环境。本篇文章将围绕如何利用SSI框架构建一个简单的小项目展开,介绍项目...
<br> <br>下面三张表格罗列的测试数据,可以明显看出AppFramework数据库访问组件的性能全面超越了IBatisNet: <br> <br>表I –10并发20循环(数据库和测试机分开) <br>对比项目 iBatis2.0...
`export.dat`通常是自定义格式的数据导出,而`.dmp`文件通常与Oracle数据库的导出有关,用于备份数据库对象和数据。 该系统可能包括以下功能模块: - 客户管理:登记、查询、修改客户信息。 - 房间管理:房间类型、...