Mybatis调用存储过程

一.调用存储过程

   1.首先在数据库中定义存储过程,定义的存储过程的代码如下:

CREATE OR REPLACE PROCEDURE SJTB_SJ.P_SJTB_ALL( V_DJXH IN NUMBER,
                                        V_KSSJ IN DATE,
                                        V_JSSJ IN DATE,
                                        V_SWJG IN VARCHAR2,
                                        V_MBGX IN NUMBER,
                                        V_XH IN PLS_INTEGER 
                                        V_RETURNVALUE OUT INT) IS
         /*@
        ****************************************************************
        *过程名称 --%@NAME: P_SJTB_ALL
        *过程描述 --%@COMMENT: 数据采集(一段时间内)
        *作者 --%@CREATOR: Liuxiao
        *参数 --%@PARAM: V_DELETE 删除标志 V_KSSJ 开始时间 V_JSSJ 结束时间 V_XH 从第几部开始执行
        *创建日期 --%@CREATED_TIME: 2019/3/19
        *修改日期 --%@MODIFY_TIME:
        *数据来源 --%@FROM: 核心征管信息
        ******************************************************************
        @*/
          V_LOG_SN      VARCHAR2(20);--序号
          V_PROCNAME    VARCHAR2(40) :='P_SJTB_ALL';--内容名称
          V_PROCDESC    VARCHAR2(100) :='核心征管数据整理';--内容描述
          V_RETINFO     VARCHAR2(100);--异常说明
          V_PROC_RESULT VARCHAR2(20);--执行结果
         

BEGIN

    V_RETURNVALUE:=1;
    V_LOG_SN := TO_CHAR( SYSTIMESTAMP, 'YYMMDDHH24MISSFF3' );--开始记录插入日志
    P_SJTB_INSERT_LOG( V_LOG_SN,V_PROCNAME, V_PROCDESC,NULL, NULL,NULL, NULL ); --插入日志
    
    
    V_PROC_RESULT := 'SUCCESS';
    V_LOG_SN := TO_CHAR( SYSTIMESTAMP, 'YYMMDDHH24MISSFF3' );--开始记录插入日志
    P_SJTB_INSERT_LOG( V_LOG_SN,  V_PROCNAME, V_PROCDESC,V_PROC_RESULT, NULL,NULL, NULL ); --插入日志


EXCEPTION
  WHEN OTHERS THEN
    --DBMS_OUTPUT.put_line(SQLERRM);
    ROLLBACK;--异常回滚
    V_RETURNVALUE:=0;
    V_RETINFO := SQLERRM;--记录错误说明
    P_SJTB_INSERT_LOG( V_LOG_SN, V_PROCNAME, V_PROCDESC, 'FAIL', V_RETINFO, NULL , NULL );
END;

2.通过接口映射Sql,定义接口

package com.inspur.tax.sst.bgsj.dao;

import java.util.List;
import java.util.Map;

public interface SstMapper {
	// 调取蜀税通跳板机存储过程调度
	public Integer  call_P_SJTB_ALL(Map<String, Object> paramMap);
	
}

3.定义映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.inspur.tax.sst.bgsj.dao.SstMapper">

	<parameterMap type="java.util.Map" id="texuChangeMap">    
       <parameter property="V_DJXH" jdbcType="VARCHAR" mode="IN"/>
       <parameter property="V_KSSJ" jdbcType="DATE" mode="IN"/>      
       <parameter property="V_JSSJ" jdbcType="DATE" mode="IN"/>    
       <parameter property="V_SWJG" jdbcType="VARCHAR" mode="IN"/>    
       <parameter property="V_MBGX" jdbcType="NUMERIC" mode="IN"/>    
       <parameter property="V_XH" jdbcType="INTEGER" mode="IN"/>    
       <parameter property="V_RETURNVALUE" jdbcType="INTEGER" mode="OUT"/>    

	</parameterMap> 
	
 
	
	<select id="call_P_SJTB_ALL" parameterMap="texuChangeMap" statementType="CALLABLE" resultType="java.lang.Integer">  
     	 {call P_SJTB_ALL(  
       			 ?,?,?,?,?,?,?
      		)}

	</select>
	
	<!-- 
	 定义存储过程
    <select id="call_P_SJTB_ALL" parameterType="map" statementType="CALLABLE" >
      {
         call P_SJTB_ALL(
               #{V_DJXH,mode=IN,jdbcType=VARCHAR},
               #{V_KSSJ,mode=IN,jdbcType=DATE},
               #{V_JSSJ,mode=OUT,jdbcType=DATE},
               #{V_SWJG,mode=IN,jdbcType=VARCHAR},
               #{V_MBGX,mode=IN,jdbcType=VARCHAR},
               #{V_XH,mode=IN,jdbcType=INTEGER},
               #{V_RETURNVALUE,mode=out,jdbcType=INTEGER}
         )
      }
  </select>
	 -->
</mapper>

4.调用

---service层

package com.inspur.tax.sst.bgsj.service.impl;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.inspur.tax.sst.bgsj.dao.SstMapper;
import com.inspur.tax.sst.bgsj.service.ISstTBService;


@Service("sstTBService")  
public class SstTBServiceImpl implements ISstTBService {
	@Autowired
	private SstMapper sstMapper;
	
	// 调用蜀税通跳板机存储过程
	public Integer  call_P_SJTB_ALL(Map<String, Object> paramMap){
		
		sstMapper.call_P_SJTB_ALL(paramMap);
		
		Integer returnValue = (Integer) paramMap.get("V_RETURNVALUE");
		
		return returnValue;
	}
	
}

--Controller

Map<String, Object> paramMap = new HashMap<String, Object>();
		 
		paramMap.put("V_DJXH", dataMap.get("djxh"));
		paramMap.put("V_MBGX", 1);
		paramMap.put("V_XH", 1);
		
		Integer flag = 0;
		flag = sstTBService.call_P_SJTB_ALL(paramMap);
		
		if(flag == 1){
			System.out.println("888888888888888888888888888888888");
		}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李晓LOVE向阳

你的鼓励是我持续的不断动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值