调用从mybatis 3返回记录的oracle函数

时间:2013-10-29 14:42:33

标签: spring oracle plsql mybatis ibatis

我在oracle中有这个功能:

CREATE or replace FUNCTION rmc_getPublicaciones (yearr IN number)

RETURN publicacionisi%ROWTYPE    
IS
publtotal publicacionisi%ROWTYPE;
BEGIN
   SELECT * into publtotal
   FROM publicacionisi p where p.py = yearr;
   RETURN publtotal;
END;

我希望从mybatis调用它并将结果放在resultmap

<select id="getAllPublicaciones"  parameterType="int" statementType="CALLABLE" resultMap="resMapPublicacionIsi" useCache="false">
         select desa.rmc_getPublicaciones(#{py}) from dual
</select>

我应该怎么做才能使这项工作? 我也可以这样做 select * from publicacionisi p where p.py={#py}但我想知道在数据库中的函数中执行此操作是否存在一些差异。

1 个答案:

答案 0 :(得分:1)

对我来说,旧的iBatis调用函数的方式仍然有效,尽管XML标签有所改变:

地图(在这种情况下可能应该换成parameterType,但我没有测试过):

<parameterMap id="getAllPublicacionesParams" type="map">
    <parameter property="property_name" jdbcType="NUMERIC" javaType="int" mode="IN"/>
</parameterMap>

呼叫:

<select id="getAllPublicaciones" parameterMap="getAllPublicacionesParams" statementType="CALLABLE">
    { ? = call desa.rmc_getPublicaciones(?) }
</select>