Mybatis中接收存储过程的 out型参数

Mybats 是 iBatis 被 Google 收购后重新命名的一个工程,当然也做了大量的升级。iBatis 2.x 调用存储过程有一个专门的标签 ,在 Mybats 3.x 里面已经没有这个标签了,而是通过一个参数 statementType=”CALLABLE” 来区分。

    存储过程有三种类型的参数,分别为 IN(输入参数),OUT(输出参数),INOUT(输入输出参数)。一个存储过程,可以有多个 IN 参数,至多有一个 OUT 或 INOUT 参数。 

◇ 只有 IN 参数的存储过程 

CREATE PROCEDURE proc_only_input (
@hello VARCHAR(8) IN
) AS

<select id="selectSth" statementType="CALLABLE" parameterType="hashmap">  
  <![CDATA[ 
{ call proc_only_input(#{good, mode=IN, jdbcType=VARCHAR}) } 
  ]]>  
</select>

prams = new HashMap();
// 调用存储过程的传递的参数名可以不和定义存储过程的参数名保持一致,只要保证它们的顺序是一致的即可。
params.put(“good”, “china”);
session.select(“pkg.selectSth”, params);

◇ 有 INOUT 或 OUT 参数的存储过程 

CREATE PROCEDURE proc_out (
@yes VARCHAR(8) IN,
@fly VARCHAR(16) OUT
) AS

return ‘return something’

Xml代码 收藏代码

<select id="selectSth" statementType="CALLABLE" parameterType="hashmap">  
  <![CDATA[ 
{ call proc_out(#{yes, mode=IN, jdbcType=VARCHAR}, #{gog, mode=OUT, jdbcType=VARCHAR}) } 
  ]]>  
</select>
Map params = new HashMap();  
// 调用存储过程的传递的参数名可以不和定义存储过程的参数名保持一致,只要保证它们的顺序是一致的即可。  
// 同时,存储过程的输出参数的值必须通过 map 来接收  
params.put("yes", "china");  
session.select("pkg.selectSth", params);  
// 得到输出参数的值  
String result = params.(String) get("gog");  

猜你喜欢

转载自blog.csdn.net/qq_26496877/article/details/78258395
今日推荐