Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用mybatis调用存储函数_Java_Mybatis - Fatal编程技术网

Java 如何使用mybatis调用存储函数

Java 如何使用mybatis调用存储函数,java,mybatis,Java,Mybatis,我开始学习Mybatis,四处寻找如何处理存储函数。 我想知道如何使用mybatis调用存储函数。 我可以使用这里描述的存储过程 提前感谢。您可以将返回值表示为OUT参数 {调用{retval,mode=OUT,jdbcType=INTEGER}=getResult{inval,mode=IN,jdbcType=INTEGER} 至少这是我在这里发现的: 您的映射程序文件应该有如下内容 <update id="myMappedStatement" parameterType="map" s

我开始学习Mybatis,四处寻找如何处理存储函数。 我想知道如何使用mybatis调用存储函数。 我可以使用这里描述的存储过程


提前感谢。

您可以将返回值表示为OUT参数

{调用{retval,mode=OUT,jdbcType=INTEGER}=getResult{inval,mode=IN,jdbcType=INTEGER}

至少这是我在这里发现的:

您的映射程序文件应该有如下内容

<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>

我现在正在使用这个:

<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>

您可以使用注释执行此操作,如下所示:

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();
  }
}
@Select(value = "select function(#{param1}, #{param2}) as returnedValueAlias")
public ReturnedType getFunctionValue(
                    @Param("param1") Param1Type param1,
                    @Param("param2") Param2Type param2);

这对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>
在爪哇

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;
}   
这对我很有用