`

IBatis调用ORACLE的存储过程、函数的返回结果集例子

阅读更多

/********************************************************************************


包中存储过程及函数 (database Oracle 10G)


********************************************************************************/

----包声明

CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
PROCEDURE proc_findResult(u_cursor OUT myrctype, u_id NUMBER);
FUNCTION fun_findResult(u_id NUMBER) return myrctype;
END pkg_test;

 

----包主体的声明

CREATE OR REPLACE PACKAGE BODY pkg_test
  AS
  PROCEDURE proc_findResult(u_cursor OUT myrctype ,u_id NUMBER)
  IS
  sqlString VARCHAR2 (500);
  BEGIN
     IF u_id = 0 THEN
        OPEN u_cursor FOR SELECT userId, userName, password, groupName FROM user_account ORDER BY userId;
     ELSE
        sqlString :='SELECT userId, userName, password, groupName FROM user_account where userId=:w_id';
        OPEN u_cursor FOR sqlString USING u_id;
     END IF;
  END proc_findResult;

  function fun_findResult(u_id NUMBER) RETURN myrctype
  IS
  u_cursor myrctype;
  sqlString VARCHAR2 (500);
  BEGIN
     IF u_id = 0 THEN
        OPEN u_cursor FOR SELECT userId, userName, password, groupName FROM user_account ORDER BY userId;
     ELSE
        sqlString :='SELECT userId, userName, password, groupName FROM user_account where userId=:w_id';
        OPEN u_cursor FOR sqlString USING u_id;
     END IF;
     return u_cursor;
   END fun_findResult;

END pkg_test;

 

 

 

 

/********************************************************************************


IBatis SQLMap 中的配置


********************************************************************************/

    <resultMap id="userAccount" class="org.taink.entity.UserAccount" >
        <result property="userId" column="userId" columnIndex="1"/>
        <result property="userName" column="userName" columnIndex="2"/>
        <result property="password" column="password" columnIndex="3"/>
        <result property="groupName" column="groupName" columnIndex="4"/>
    </resultMap>

 

 

    <!-- call procedure parameter
    <parameterMap  id="parameterMap" class="java.util.HashMap">
        <parameter property="u_cursor" jdbcType="ORACLECURSOR"
         javaType="java.sql.ResultSet" mode="OUT" />
        <parameter property="u_id" jdbcType="NUMBER" javaType="java.lang.Integer" mode="IN"/>
    </parameterMap>
    -->
   
    <!--  call procedure
    <procedure id="test_cursor" parameterMap="parameterMap" resultMap="userAccount">
        {call pkg_test.proc_findResult(?,?)}
    </procedure>
    -->
   
   
    <!-- call function parameter     -->
    <parameterMap  id="parameterMap" class="java.util.HashMap">
        <parameter property="u_cursor" jdbcType="ORACLECURSOR"
         javaType="java.sql.ResultSet" mode="OUT" />
        <parameter property="u_id" jdbcType="NUMBER" javaType="java.lang.Integer" mode="IN"/>
    </parameterMap>
   
    <!--  call function     -->
    <procedure id="test_cursor" parameterMap="parameterMap" resultMap="userAccount">
        {? = call pkg_test.fun_findResult(?)}
    </procedure>

 

/********************************************************************************


Dao layer java code


********************************************************************************/

 

    @SuppressWarnings("unchecked")
    @Override
    public List findAllUserAccountByProcOrFun(Map parameterMap) {
        List result = null;
        try {
            result = super.sqlMapClient.queryForList("test_cursor",parameterMap);
        } catch (SQLException e) {
            System.out.println("-------------error-------------");
            e.printStackTrace();
        }
        return result;
    }

 

/********************************************************************************


java Test class


********************************************************************************/

public class TestProcOrFun {

    public static void main(String[] args) {

        IUserAccountDao userAccountDao = new UserAccountDaoImpl();

 

       // find all object by procedure or function  operation
        Map parameterMap = new HashMap();
        parameterMap.put("u_id", 15);
        List accountList =
            userAccountDao.findAllUserAccountByProcOrFun(parameterMap);
        if (accountList.size()>0 ) {
            for (Object temp : accountList) {
                if (temp != null) {
                    System.out.println(((UserAccount)temp).toString());
                }
            }
        } else {
            System.out.println("result is null");
        }

    }

}

分享到:
评论

相关推荐

    ibatis调用oracle的函数,存储过程的方法

    在Ibatis中调用Oracle函数和存储过程,你需要以下步骤: 1. **配置映射文件(Mapper XML)**: - 创建一个XML映射文件,定义SQL语句。对于函数,使用`&lt;select&gt;`标签;对于存储过程,使用`&lt;procedure&gt;`标签。 - 在...

    ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标

    在iBatis中,当存储过程返回一个游标时,你可以将其映射为一个Java List。为此,你需要在Java方法中声明一个List类型的参数,而在SQL映射文件中,使用`&lt;resultMap&gt;`定义一个结果集映射,然后在`&lt;selectResult&gt;`标签...

    ibatis+oracle实例

    3. **存储过程调用**:Ibatis可以通过`&lt;select&gt;`、`&lt;procedure&gt;`元素调用Oracle的存储过程,增强业务逻辑的封装性。 4. **连接池管理**:Ibatis可以与各种连接池(如C3P0、Druid、HikariCP等)集成,提高数据库连接...

    Ibatis.net+ oracle 简单事例

    对于Oracle,可能需要利用其特有的函数或特性,如PL/SQL存储过程、游标等。 3. **SQL映射接口**:在.NET 类中创建对应的接口,这个接口的方法对应XML文件中的SQL语句,实现业务逻辑与SQL的绑定。 4. **事务管理**...

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

    Oracle数据库支持多种分页方式,如ROWNUM伪列、ROWNUM配合子查询、ROW_NUMBER()窗口函数等。在这个项目中,开发者可能采用了简单的SQL拼接方式,即在动态构建的SQL查询语句中添加LIMIT或OFFSET子句来实现分页,这种...

    ibatis oracle 实例 (源码)

    Oracle还提供了许多高级特性,如PL/SQL过程语言、触发器、存储过程和函数,以及分区表等,这些在复杂的业务场景中十分有用。 该实例可能包含以下内容: 1. 数据库连接配置:在Ibatis的配置文件中,会设置Oracle的...

    Mybatis调用PostgreSQL存储过程实现数组入参传递

    在本文中,我们将探讨如何在Mybatis框架中调用PostgreSQL的存储过程,特别是处理 PostgreSQL 的数组类型作为存储过程的输入参数。Mybatis是一个流行的Java持久层框架,它允许开发者编写SQL语句,并与Java对象进行...

    访问存储过程(或函数)一般以procedure标签来定义statement。

    ### 访问存储过程(或函数)通过IBATIS中的Procedure标签定义Statement 在IBATIS框架中,访问数据库中的存储过程或者函数是一项常见的需求。本文将深入探讨如何利用IBATIS提供的`procedure`标签来定义这样的操作,...

    Ibatis框架的核心知识点

    例如,对于Oracle,可以调用序列函数获取新的主键值。 4. **存储过程** Ibatis 支持调用数据库的存储过程。通过 `&lt;procedure&gt;` 元素,可以定义存储过程的调用,并通过 `&lt;parameterMap&gt;` 定义输入输出参数。在存储...

    struts-2.0.11+spring-2.5+ibatis-2.3及其它各种jar包

    Struts 2、Spring 和 iBatis 是三个非常重要的 Java 开发框架,它们在构建企业级应用程序时扮演着核心角色。这个压缩包包含了这些框架的特定版本和其他相关的库,为开发人员提供了一套完整的集成环境。 Struts 2 是...

    struts2+spring+ibaites+oracle+CURD

    4. Oracle数据库:理解Oracle的数据类型、表结构设计、索引、存储过程和函数的使用,以及SQL语句(DML、DDL、DQL、DCL)的编写和优化。 5. CRUD操作:学习如何通过Struts2和iBatis实现对Oracle数据库的增删改查操作...

    java现场面试题--亚信SSH\Oracle面试题

    ### Java现场面试题详解:亚信SSH\Oracle面试题 #### Struts1.0的运行机制与架构原理 Struts框架作为MVC(Model-View-Controller)设计模式的经典实现之一,极大地方便了Java Web应用的开发。在传统的JSP-Servlet-...

    JAVA+ORALCE面试题汇总

    4. **处理结果集**:如果查询操作返回结果集,则需要使用ResultSet对象遍历数据。 5. **关闭资源**:最后记得关闭所有打开的资源,包括ResultSet、Statement和Connection。 #### 5. Struts框架的基本原理 Struts是...

    IBM JAVA培训计划

    - 结果集处理 - 事务管理 - DAO模式 - DTO模式 ##### 7. JUnit - 测试框架基础 - 测试设计与执行 ##### 8. 应用系统开发流程 - 需求调研 - 系统设计 - 系统实现 - 系统部署 **可选项目**: - Mail Server ...

    java面试知识

    ##### 存储过程概述 - **定义**:一组预编译的SQL语句。 - **用途**:提高代码复用性和性能,简化复杂业务逻辑。 ##### 索引概述 - **类型**:B-tree、位图、反转索引等。 - **作用**:加快数据检索速度。 #### ...

    文思面试题(java)

    解释为何选择Hibernate,以及调用存储过程的方法。 7. **DWR(Direct Web Remoting)**:DWR允许JavaScript与服务器端Java代码进行交互,实现Ajax功能。要能解释DWR的工作原理,并提供在项目中使用DWR的实例。 8. ...

    Spring中文帮助文档

    使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall使用的参数 11.5.7. 如何定义SqlParameters 11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6...

    Spring API

    使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall使用的参数 11.5.7. 如何定义SqlParameters 11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6...

    最新Java面试宝典pdf版

    22、用JDBC如何调用存储过程 109 23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决...

    java面试宝典2012

    22、用JDBC如何调用存储过程 119 23、JDBC中的PreparedStatement相比Statement的好处 120 24. 写一个用jdbc连接并访问oracle数据的程序代码 121 25、Class.forName的作用?为什么要用? 121 26、大数据量下的分页解决...

Global site tag (gtag.js) - Google Analytics