首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iBatis过程调用

iBatis过程调用
EN

Stack Overflow用户
提问于 2019-02-20 16:11:03
回答 1查看 220关注 0票数 1

我不能用ibatis调用一个过程。我收到无效的列索引错误。下面是代码,我跳过了myService实现。错误:-错误发生在ibatis/ployee.xml中。

-执行查询过程时出错。

-检查{ call GET_MY_INFO(#idNumber#,#result#) }。

-检查输出参数(寄存器输出参数失败)。

-原因: java.sql.SQLException:无效的列索引

代码语言:javascript
复制
<parameterMap id="getInfoCall" class="map">
    <parameter property="idNumber" jdbcType="NUMERIC" mode="IN"/>
    <parameter property="result" jdbcType="CURSOR" javaType="java.sql.ResultSet" mode="OUT"/>
</parameterMap>

<procedure id="getInfo" resultClass="MyClass" parameterMap="getInfoCall">
     { call GET_MY_INFO(#idNumber#,#result#) } 
</procedure>

MyClass.java:

代码语言:javascript
复制
public class MyClass{   
  private String name;  
    private String surname; 

    public String getName() {
        return name;
    }
    public void setName(String name)
    {
        this.name=name;
    }
    public String getSurname()
    {
        return surname;
    }
    public void setSurname(String surname)
    {
        this.surname=surname;
    }
 }



 HashMap<String,Object> params = new HashMap  <String,Object>();
    ResultSet rs = null;
    params.put("idNumber", id.getValue());
    params.put("result", rs);
    ArrayList result;
    result = (ArrayList) myService.getInfo(params);

操作步骤:

代码语言:javascript
复制
DECLARE
ID_NUMBER NUMBER;
RESULT_P SYS_REFCURSOR;
BEGIN
ID_NO_P := ID_NUMBER;
RESULT_P := NULL;
GET_MY_INFO( ID_NUMBER, RESULT_P );
:rc0_P_CURSOR := RESULT_P;
END;

resultMap版本:

代码语言:javascript
复制
   <resultMap id="result" class="map" type="MyClass" >
        <result property="name" column="NAME"/>
        <result property="surname" column="SURNAME"/>
    </resultMap>

    <procedure id="getInfo" resultMap="result" parameterMap="getInfoCall">
         { call GET_MY_INFO(#idNumber#,#result#) } 
    </procedure>
EN

回答 1

Stack Overflow用户

发布于 2019-02-20 17:05:40

这就是我的意思。这是你已经尝试过的吗?

代码语言:javascript
复制
<typeAlias alias=”myTypeAlias” type=”path.to.MyClass” />

<resultMap id="myResultMap" class="myTypeAlias" >
    <result property="name" column="NAME"/>
    <result property="surname" column="SURNAME"/>
</resultMap>    

<parameterMap id="getInfoCall" class="map">
    <parameter property="idNumber" jdbcType="NUMERIC" mode="IN"/>
    <parameter property="result" resultMap="myResultMap" jdbcType="CURSOR" javaType="java.sql.ResultSet" mode="OUT"/>
</parameterMap>

<procedure id="getInfo" resultClass="MyClass" parameterMap="getInfoCall">
     { call GET_MY_INFO(#idNumber#,#result#) } 
</procedure>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54781587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档