`
zhouxingfu520
  • 浏览: 422514 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ibatis查询oracle分页

阅读更多

开发采用spring+struts+ibatis+extjs,数据库用oracle

ibtais配置分页 模糊查询

 

<sqlMap namespace="RYDM" >
<!--加载 分页对象-->
  <typeAlias alias="page" type="com.portal.util.Page" />
<!--加载 实体对象-->
 <typeAlias alias="abatorgenerated_RydmResult" type="com.portal.model.Rydm" />
  <resultMap id="abatorgenerated_RydmResult" class="com.portal.model.Rydm" >
 <result column="RYDM" property="rydm" jdbcType="VARCHAR" />
    <result column="RYMC" property="rymc" jdbcType="VARCHAR" />	
  <result column="BMZDM" property="bmzdm" jdbcType="VARCHAR" />	

<sql id="findByPageCondition">
		<isNotEmpty property="objCondition">
		    	<isNotEmpty property="objCondition.bmzdm">
					 bmzdm LIKE '%$objCondition.bmzdm$%'
		    	</isNotEmpty>
		    	<isNotEmpty property="objCondition.rymc">
				    AND rymc LIKE '%$objCondition.rymc$%'    
		    	</isNotEmpty>
		</isNotEmpty>
	</sql>
	<select id="findByPage" parameterClass="page" 
                             resultClass="abatorgenerated_RydmResult">
            SELECT * FROM (SELECT row_.*, rownum rownum_ FROM
                    (select ry.* from RYDM ry  
                    where 1=1 
         <dynamic prepend="AND">
			<include refid="findByPageCondition" />
		</dynamic>       
            )row_ WHERE rownum &lt;= $limit$)row_ WHERE rownum_ &gt;$start$ 
			ORDER BY rydm
	</select>
	<select id="findByCount" parameterClass="page" resultClass="int">
			SELECT COUNT(*) FROM RYDM ry   where 1=1
		<dynamic prepend="AND">
			<include refid="findByPageCondition" />
		</dynamic>
	</select>
 

 

分页模型通用类

 

public class Page implements java.io.Serializable{

	public void setPageProperty(Page page) {
		if(page.getStart()>0){
		// 设置取数据的区间
		int endPage=page.getStart()+page.getLimit(); 
		int stratPage=page.getStart();
		this.setStart(stratPage);
		this.setLimit(endPage);
		}else{
			this.setLimit(page.getLimit());
			this.setStart(0);
		}
	}

	/** 总记录数 */
	private int totalProperty;

	/** 分页结果 */
	private List root;

	/** 开始页码 */
	private int start;

	/** 每页多少 */
	private int limit;

	/** 成功与否 */
	private boolean success;

	/** 查询条件 */
	private Object objCondition;

  实体类

public class Rydm implements Serializable{
    /**
     * This field was generated by Abator for iBATIS.
     * This field corresponds to the database column RYDM.RYDM
     *
     * @abatorgenerated Sat Aug 06 16:55:26 CST 2011
     */
    private String rydm;


    private String rymc;

    private String bmzdm;
 

 

服务层调用

public class RydmServiceImpl extends SqlMapClientDaoSupport implements
		RydmService {
	
public Page findByPageRydm(Page page) throws BusinessException {
		page.setTotalProperty((Integer) getSqlMapClientTemplate()
				.queryForObject("RYDM.findByCount", page));
		page.setPageProperty(page);
		page.setRoot(getSqlMapClientTemplate().queryForList(
				"RYDM.findByPage", page));
		return page;
	}
 

 

action设置分页属性

public class UsersAction extends ActionSupport implements ServletRequestAware,
SessionAware{
    public String message;
    public String conditions;
	protected Map session;//会话对象
	protected HttpServletRequest request;//请求对象
/*
	 * 查询用户信息
	 */
	public String listUser() {
        Rydm user=new   Rydm();                
        user.setBmzdm(request.getParameter("bmzdm").toString());
		user.setRymc(request.getParameter("rymc").toString());
		int start =0;
		int Limit=10;
		Page page = new Page();
       try {
		start = Integer.valueOf(getRequest().getParameter("start"));
		Limit = Integer.valueOf(getRequest().getParameter("limit"));
		}catch (NumberFormatException e) {
		}
		page.setStart(start);
		page.setLimit(Limit);
		//使用对象作为查询参数 传入ibtais
		page.setObjCondition(user);
		page = userService.findByPage(page);
		} catch (BusinessException e) {
			log.warn("UsersAction.class查询用户信息出现异常"+e.getMessage(), e);
		}
		return SUCCESS;
	}
}

  返回配置 我是使用了ext  所以转换json 显示到客户端

<package name="admin" extends="json-default" namespace="/admin">
	
	<action name="listUser" class="userAction" method="listUser">
			<result type="json">
				<param name="root">page</param>
				<param name="excludeProperties">limit,start,objCondition</param>
			</result>
		</action>
</package>
 

 

extjs 参数查询

var rydm_store = new Ext.data.Store({
	proxy : new Ext.data.HttpProxy({
		url : "/extDemo/admin/userList.action",
		method:"post"
	}),
	reader : new Ext.data.JsonReader({
		totalProperty : 'totalProperty',
		root : 'root',
		fields : [  {
			name : 'bmzdm',
			type : 'string'
		} , {
			name : 'bmmc',
			type : 'string'
		}]
	})
});

var btn_search_rydm = new Ext.Button({
	text : '查询',
	iconCls : 'icon-search',
	handler : queryRydm
});


var queryRydm = function() {
	rydm_store.baseParams.bmzdm= bmzdm_search_rydn.getValue();
	rydm_store.baseParams.rymc =text_search_rydm.getValue();
	rydm_store.load({params : {start : 0,limit : 15}});
	
}
分享到:
评论

相关推荐

    spring+ibatis+oracle分页缓存源码

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

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

    在这个实例中,iBatis作为数据访问层,负责与Oracle数据库交互,执行分页查询和插入、更新、删除操作。它通过XML或注解方式定义SQL语句,使得数据库操作更加直观和灵活。 4. **Oracle**:Oracle数据库是企业级的...

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    SSI整合,有ibatis连接oracle的分页,ajax等技术

    "Ibatis连接Oracle的分页"是指利用Ibatis作为数据访问层,与Oracle数据库进行交互,并实现了分页查询功能。Oracle数据库支持多种分页方式,如ROWNUM伪列、ROWNUM配合子查询、ROW_NUMBER()窗口函数等。在这个项目中,...

    ibatis实现分页技术

    `LIMIT`和`OFFSET`是MySQL中的分页关键字,其他数据库可能有不同的语法,如Oracle使用`ROWNUM`等。 2. Java接口 在对应的Mapper接口中,定义一个方法来执行这个SQL查询,并接收一个Map对象作为参数,Map中存放分页...

    Ibatis 2.3.4 数据库无关分页

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

    oracle分页(ibatis-2.3.4.726.jar).rar

    综上所述,通过理解Oracle的物理分页机制,并结合iBATIS提供的SQL映射和动态SQL功能,我们可以有效地在Java应用中实现Oracle数据库的高效分页查询。对于老旧的iBATIS版本,这通常是提高大型数据集查询性能的关键。而...

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

    公司的大部分项目都开始使用IBatis作为O/R Mapping了,但是在使用的过程中也发现了很多不方便和存在争议的地方,其中一个不方便的地方就是分页,目前的处理方式都是在sqlMap中写针对特定数据库的物理分页Sql语句,对于...

    修改ibatis源代码实现物理分页

    在数据库操作中,分页查询是一项非常常见的任务,它能够有效地减少内存负担,提高系统性能。Ibatis,作为一款轻量级的Java持久层框架,虽然功能强大,但在默认情况下,其分页方式是逻辑分页,即先查询所有数据,然后...

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

    总之,通过以上方法,我们可以实现在不修改iBatis源码的前提下,让iBatis支持类似Hibernate的物理分页,提高查询效率,尤其在大数据量的场景下,这种优化尤为关键。不过,需要注意的是,不同的数据库系统对物理分页...

    SSI框架搭建增删改查以及分页

    例如,通过在查询SQL中添加LIMIT和OFFSET子句(在Oracle中可能需要使用ROWNUM),配合前端传递的页码和每页条数,就能实现动态分页。 项目中的"SSIbatise"可能是包含了所有配置文件、源代码、SQL脚本等资源的文件夹...

    ssi_struts2_spring_ibatis 增删改查分页

    "增删改查分页"是Web应用中最基本的数据操作功能,包括添加(Insert)、删除(Delete)、更新(Update)和查询(Select),以及分页展示数据。分页是提高用户体验和系统性能的重要手段,特别是在处理大量数据时。 ...

    ibatis常见案例

    在大数据量的场景下,分页查询是必不可少的。Ibatis提供了两种主要的分页方式:一是使用`limit`和`offset`(MySQL),二是使用`rownum`(Oracle)。在映射文件中,可以通过动态SQL来实现分页功能。 ```xml SELECT...

    spring mvc+ibatis+spring注解

    "分页排序查询"是Web应用中常见的需求,Spring MVC 和 Ibatis 结合可以方便地实现这一功能。在Ibatis中,可以通过动态SQL来实现排序(ORDER BY)和分页(LIMIT 或 ROWNUM),而在控制器层,Spring MVC 可以处理请求...

    ibatis.net

    此外,可能还涵盖了如何处理复杂的数据操作,如关联查询、分页、批处理等。 “MyBatis 3 User Guide Simplified Chinese.pdf”虽然名义上是关于MyBatis(Java版)的用户指南,但很多原理和概念对于理解Ibatis.Net也...

    javaweb_分页显示数据库内容

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

    ibatis sql生成工具

    此外,该工具可能还包含了对复杂的查询条件的支持,比如模糊搜索、分页查询等,这些在生成的SQL中会以动态SQL的形式出现,使得代码更加简洁和易于维护。对于大型项目而言,这种自动化生成的功能能够显著减少编码时间...

    jqgrid+struts2+ibatis增删改查

    在IT领域,尤其是在Web开发中,"jqGrid+Struts2+iBatis+Oracle"是一种常见的技术组合,用于构建功能强大的数据管理应用。这里,jqGrid是一个强大的JavaScript表格插件,Struts2是一个Java Web应用程序框架,iBatis是...

    ibatis 例子

    此外,Oracle的游标、分页、序列等特性也可以方便地在`ibatis`中使用。 10. **最佳实践** 在实际应用中,应遵循良好的设计原则,如贫血模型和充血模型的选择,避免过多的嵌套SQL,合理使用缓存,以及充分利用...

    扩展 iBatis 以透明支持多种数据库

    iBatis 是一个轻量级的 Java 框架,它将 SQL 查询与 Java 代码分离,提高了可维护性和可测试性。 在描述中提到的 "NULL" 可能是因为原始描述内容缺失或已删除,因此我们无法直接获取更多的信息。但根据标题,我们...

Global site tag (gtag.js) - Google Analytics