java - 用mybatis调用存储函数的java方法

  显示原文与译文双语对照的内容
67 3

我开始学习 Mybatis,我四处搜索如何处理存储的函数。 我想知道如何使用mybatis调用存储函数。 我可以用这里描述的存储过程来描述 http://loianegroner.com/2011/03/ibatis-mybatis-working-with-stored-procedures/。

先谢谢了。

时间:

80 5

你的mapper文件应该有如下内容


<update id="myMappedStatement" parameterType="map" statementType="CALLABLE">


 {#{returnedVal,javaType=String,jdbcType=VARCHAR,mode=OUT} = call myFunc(


 #{myParam1, javaType=String, jdbcType=VARCHAR,


 mode=IN},#{myParam2, javaType=String, jdbcType=VARCHAR,


 mode=IN},#{myParam3, javaType=String, jdbcType=VARCHAR,


 mode=IN})} 


</update>



调用函数应该类似于下面这样:


public String myFunction(Map myParams)


{


//assuming the dao has an Object sqlSessionFactory of type SqlSessionFactory


 SqlSession session = sqlSessionFactory.openSession();


 try


 {


 session.update("myMappedStatement",myParams);


//now myParams contains an entry with key"returnedVal"


 return (String)myParams.get("returnedVal"); 


 }


 catch (Exception ex)


 {



 }finally {


 session.close();


 }


}



129 4

你可以将返回值表示为输出参数。

{ CALL #{retval, mode=OUT, jdbcType=INTEGER} = getResult(#{inval, mode=IN, jdbcType=INTEGER})}

至少我在这里找到的是 http://mybatis-user.963551.n3.nabble.com/How-to-map-function-call-td3457305.html

104 0

我现在用的是这个


<resultMap id="resultBalance" type="Balance">


 <result property="balance" column="BALANCE"/>


</resultMap>



<select id="getBalance" parameterType="Registration" resultMap="resultBalance">


 select MB_CHECK_BALANCE( #{account}, #{msisdn} ) as BALANCE from dual


</select>



57 5

你可以使用注释来执行这里操作,如下所示:


@Select(value ="select function(#{param1}, #{param2}) as returnedValueAlias")


public ReturnedType getFunctionValue(


 @Param("param1") Param1Type param1,


 @Param("param2") Param2Type param2);



115 0

它在ibatis上工作,因此它也可以在mybatis上工作:


<parameterMap id="obtenerModoConsultaParams" class="java.util.HashMap"> 


 <parameter property="modoConsulta" jdbcType="INTEGER" javaType="java.lang.Integer" mode="OUT"/>


</parameterMap> 



<procedure id="modoConsulta.element" parameterMap="obtenerModoConsultaParams"> 


 {? = call proceso_consulta_ruc.modo_operacion_consulta_ruc ()} 


</procedure>



在JAVA中


public Integer loadModoConsulta() throws Exception {


 Integer result = null;


 HashUtil<String, Object> param = new HashUtil<String, Object>();


 getSqlMapClientTemplate().queryForObject("modoConsulta.element", param);


 result = param.getInt("modoConsulta");


 return result;


} 



这对我有用。

...