`
liwei888
  • 浏览: 94780 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ibatis中调用oracle的函数、返回数据集

阅读更多

第一步:映射文件配置。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="ROP">
<typeAlias alias="ROP" type="com.sgai.sm.entity.ROP"/>
<resultMap id="ROPResult"  class="ROP">
 <result property="sid" column="SID" jdbcType="NUMERIC"/>
 <result property="createdBy" column="CREATED_BY" jdbcType="VARCHAR"/>
 <result property="createdDt" column="CREATED_DT" jdbcType="TIMESTAMP"/>
 <result property="version" column="VERSION" jdbcType="NUMERIC"/>
 <result property="updatedBy" column="UPDATED_BY" jdbcType="VARCHAR"/>
 <result property="updatedDt" column="UPDATED_DT" jdbcType="TIMESTAMP"/>
 <result property="remarks" column="REMARKS" jdbcType="VARCHAR"/>
 <result property="taskCounter" column="TASK_COUNTER" jdbcType="VARCHAR"/>
 <result property="msgCounter" column="MSG_COUNTER" jdbcType="NUMERIC"/>
 <result property="areaId" column="AREA_ID" jdbcType="VARCHAR"/>
 <result property="stationNumber" column="STATION_NUMBER" jdbcType="VARCHAR"/>
 <result property="msgTimeStamp" column="MSG_TIME_STAMP" jdbcType="TIMESTAMP"/>
 <result property="sampleStatus" column="SAMPLE_STATUS" jdbcType="NUMERIC"/>
 <result property="heatId" column="HEAT_ID" jdbcType="VARCHAR"/>
 <result property="ironPretreatmentId" column="IRON_PRETREATMENT_ID" jdbcType="VARCHAR"/>
 <result property="ironId" column="IRON_ID" jdbcType="VARCHAR"/>
 <result property="sampleTime" column="SAMPLE_TIME" jdbcType="TIMESTAMP"/>
 <result property="sampleId" column="SAMPLE_ID" jdbcType="VARCHAR"/>
 <result property="sampleNumber" column="SAMPLE_NUMBER" jdbcType="NUMERIC"/>
 <result property="sampleStartTime" column="SAMPLE_START_TIME" jdbcType="TIMESTAMP"/>
 <result property="sampleReleaseTime" column="SAMPLE_RELEASE_TIME" jdbcType="TIMESTAMP"/>
 <result property="steelGrade" column="STEEL_GRADE" jdbcType="VARCHAR"/>
 <result property="steelGroup" column="STEEL_GROUP" jdbcType="VARCHAR"/>
 <result property="caId" column="CA_ID" jdbcType="VARCHAR"/>
 <result property="archiveTmstmp" column="ARCHIVE_TMSTMP" jdbcType="TIMESTAMP"/>
 <result property="treatmentCounter" column="TREATMENT_COUNTER" jdbcType="NUMERIC"/>
 <result property="msgFlag" column="MSG_FLAG" jdbcType="VARCHAR"/>
</resultMap>
 <parameterMap id="test" class="java.util.HashMap"> 
 <parameter property="result" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="ROPResult" /> 
 <parameter property="STANO" jdbcType="VARCHAR"  javaType="java.lang.String" mode="IN" /> 
 <parameter property="AREA" jdbcType="VARCHAR"  javaType="java.lang.String" mode="IN" /> 
 <parameter property="heatid" jdbcType="VARCHAR"  javaType="java.lang.String" mode="IN" /> 
  </parameterMap> 
   <procedure id="testCur" parameterMap="test"> 
        {?= call GM_Test(?,?,?)}  
  </procedure> 
</sqlMap>
第二步:编写oracle的函数

CREATE OR REPLACE FUNCTION TMSDEV.GM_Test(STANO VARCHAR2,AREA VARCHAR2,heatid VARCHAR2
               
        )RETURN SYS_REFCURSOR
        is
             
              -- strsql1   varchar2(500):=''; 
                   -- type SYS_REFCURSOR is ref cursor;
                     type_cur SYS_REFCURSOR;
   

        BEGIN
            OPEN type_cur FOR
                   select * from tms_rop_iface_element_main WHERE AREA_ID=AREA AND STATION_NUMBER=STANO
                 AND HEAT_ID=heatid;
                
                    
                  RETURN  type_cur;
                 
                 
                 --  close type_cur;
        END;
/

第三步:测试方法:

public class ROPDaoImpl extends IBatisGenericDaoImpl<ROP> implements ROPDao {

    /* (non-Javadoc)
     * @see com.sgai.sm.dao.ROPDao#getRecords(java.util.Map)
     */
    public List<ROP> getRecords(Map map) {
 return (List<ROP>)this.getSqlMapClientTemplate().queryForObject("ROP.testCur", map);
    }

}

 

第四步:单元测试成功!

public class ROPServiceTest extends BaseSpringTest {

    private ROPService rOPService;

    public ROPServiceTest() throws Exception {
 super();
 // TODO Auto-generated constructor stub
    }

    public void onSetUp() throws Exception {
 super.onSetUp();
 rOPService = (ROPService) this.findBean("rOPService");
 // 获取bean对象
    }

    public void prepareData() {
 Map<String, Object> p = new HashMap<String, Object>();
 p.put("STANO", "2");
 p.put("AREA", "CAS");
 p.put("heatid", "10500474");
 rOPService.getRecords(p);
 List list = (List) p.get("result");
 for (int i = 0; i < list.size(); i++) {
     ROP emp = (ROP) list.get(i);
     System.out.println(emp.getHeatId());
 }
    }

    public void testFind() {
 prepareData(); 
    }

}

第五步:测试结果

0123506

0123507

 

 

分享到:
评论

相关推荐

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

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

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

    确保正确配置Oracle驱动和数据源,以及正确处理异常,是成功调用Oracle函数和存储过程的关键。 通过学习和实践这些技巧,开发者可以充分利用iBatis的优势,高效地在Java应用中调用Oracle的函数和存储过程,提高代码...

    Ibatis.net+ oracle 简单事例

    添加对Oracle 的引用,如Oracle.DataAccess.Client,然后将Ibatis.net 的相关配置文件和Mapper XML文件加入到项目中。使用VS2008的调试工具,可以快速测试SQL语句和业务逻辑。 【示例应用】 "IbatisTet" 可能是一个...

    ibatis+oracle实例

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

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

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

    ibatis oracle 实例 (源码)

    通过这个实例,你可以学习如何在Ibatis中配置Oracle数据库,如何编写SQL映射文件,以及如何在Java代码中使用Mapper接口进行数据操作。同时,对于Oracle的使用也会有更深入的理解,例如如何处理Oracle特有的数据类型...

    Ibatis框架的核心知识点

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

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

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

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

    Spring 框架是 Java 开发中的一个全面解决方案,它不仅提供了 IoC(Inversion of Control)和 AOP(Aspect-Oriented Programming)功能,还涵盖了数据访问、Web 应用开发、事务管理等多个方面。Spring 2.5 版本在此...

    struts2+spring+ibaites+oracle+CURD

    标题“struts2+spring+ibatis+oracle+CURD”揭示了这是一个关于使用四大开源框架(Struts2、Spring、iBatis)与Oracle数据库进行基础数据操作(CRUD:创建、读取、更新、删除)的项目。在这个项目中,Struts2作为MVC...

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

    在存储过程中,我们可以定义接受数组作为参数的函数。例如,以下是一个接受整数数组作为参数的PostgreSQL存储过程: ```sql CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4) RETURNS "pg_...

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

    它接收FormBean传来的数据,进行处理后,决定下一步的动作(如转向新的页面或返回错误信息)。 #### Action的生命周期解析 Action对象的生命周期包含四个阶段: 1. **加载和实例化**:当请求到达时,Action...

    JAVA+ORALCE面试题汇总

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

    文思面试题(java)

    24. **C++特性**:理解C++中的static关键字、虚函数、多态、抽象类、静态成员和成员函数等概念,以及它们在面向对象编程中的作用。 25. **Oracle错误查看**:通过查看Oracle的错误日志(如alert.log)或使用`SQL*...

    Spring中文帮助文档

    11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6. 用Java对象来表达JDBC操作 11.6.1. SqlQuery类 11.6.2. MappingSqlQuery类 11.6.3. SqlUpdate类 11.6.4...

    java面试知识

    - **POST**:数据通过请求体发送,不显示在URL中,适合传输大量或敏感数据。 ##### Java多态的具体体现 - **继承**:子类可以覆盖父类的方法。 - **接口实现**:一个类可以通过实现多个接口来展示不同的行为。 - *...

    最新Java面试宝典pdf版

    16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...

    Spring API

    11.5.8. 使用SimpleJdbcCall调用内置函数 11.5.9. 使用SimpleJdbcCall返回的ResultSet/REF Cursor 11.6. 用Java对象来表达JDBC操作 11.6.1. SqlQuery类 11.6.2. MappingSqlQuery类 11.6.3. SqlUpdate类 11.6.4...

    IBM JAVA培训计划

    - **JavaEE**: Java企业版,包括JNDI(Java命名与目录接口)、RMI(远程方法调用)、JTA(Java事务API)、JMS(Java消息服务)等高级特性。 - **J2ME**: Java微版,适用于移动设备等资源受限环境。 ##### 2. Java...

    java面试宝典2012

    24. 写一个用jdbc连接并访问oracle数据的程序代码 121 25、Class.forName的作用?为什么要用? 121 26、大数据量下的分页解决方法。 121 27、用 JDBC 查询学生成绩单, 把主要代码写出来(考试概率极大). 122 28、这段...

Global site tag (gtag.js) - Google Analytics