mybatis调用存储过程demo

一、数据库存储过程:

create or replace procedure pro_check_balance_test(mer_id in varchar2, mer_date in varchar2, error_num out integer) as
v_par varchar2(8);
v_parvalue varchar2(2);
v_sql varchar2(1024);
v_ErrorCode number;
v_ErrorText varchar2(255);
begin


    error_num := 3;


end;


二、dao接口层代码:

Map mrktcheck(Map map);

三、mybatis配置xml代码

<select id="mrktcheck" statementType="CALLABLE" parameterType="java.util.Map" resultType="java.util.Map">
   pro_check_balance_test(
             #{merId,mode=IN,jdbcType=VARCHAR},
             #{merDate,mode=IN,jdbcType=VARCHAR},
             #{errorNum,mode=OUT,jdbcType=INTEGER}
          )}
      ]]>
select>


四、单元测试代码:

@Test
public void  mrktcheckTest(){
   try {
      ProProductDao proProductDao = BeanContainerFactory
            .getBeanContainer(ProProductDao.class.getClassLoader())
            .getBean(ProProductDao.class);
      Map mp = new HashMap();
      mp.put("merId", "3");
      mp.put("merDate", "3");
      mp.put("errorNum", null);
      proProductDao.mrktcheck(mp);
      Object c = mp.get("errorNum");
   } catch (Exception e) {

   }
 
  
五、注意点:
1. ]]>  标签的使用可以解决存储过程不识别的问题
2.如果不添加resultType="java.util.Map" 导致返回的map为空。

你可能感兴趣的:(存储过程,mybatis)