使用MyBatis调用Oracle存储过程

一、Oracle存储过程

存储过程代码

create or replace procedure TEST_DEMO_PROC(param_name    IN VARCHAR2, return_result OUT VARCHAR2) is
begin
  return_result := 'Hello ' || param_name;
end TEST_DEMO_PROC;
/

测试存储过程

declare result varchar2(100);
begin
test_demo_proc('Kevin', result);
DBMS_OUTPUT.put_line(result);
end;
/

####二、ojdbc6的Maven Dependency配置

<dependency>
	<groupId>com.oracle</groupId>
	<artifactId>ojdbc6</artifactId>
	<version>12.1.0.1-atlassian-hosted</version>
</dependency>
三、Oracle连接配置

Oracle数据库连接属性(需要根据自己的实际情况进行修改):

db.driverClass=oracle.jdbc.OracleDriver
db.url=jdbc:oracle:thin:@localhost:1521/xe
db.username=system
db.password=password

数据源dataSource配置

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${db.driverClass}"/> 
    <property name="url" value="${db.url}"/> 
    <property name="username" value="${db.username}"/> 
    <property name="password" value="${db.password}"/> 
</bean> 
四、MyBatis的Mapper和Mapper对应的xml文件

Mapper文件:

/**
 * 存储过程测试Demo
 * 
 * @author Kevin
 * @date 2017-01-03
 */
public interface ProcedureDemoMapper {

	/**
	 * 测试方法
	 *
	 * @param param
	 */
	void testMethod(Map<String, Object> param);

}

Mapper对应的xml文件

<?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.zkj.dal.mybatis.model.mapper.ProcedureDemoMapper">
    <parameterMap type="map" id="paramMap">
        <parameter property="param_name" jdbcType="VARCHAR" mode="IN"/>
        <parameter property="return_result" jdbcType="VARCHAR" mode="OUT"/>
    </parameterMap>

    <select id="testMethod" parameterMap="paramMap" statementType="CALLABLE">
        {call system.test_demo_proc(?, ?)}
    </select>

</mapper>
五、Mapper单元测试代码
package mybatis;

import java.util.HashMap;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.zkj.dal.mybatis.model.mapper.ProcedureDemoMapper;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/mybatis.xml"})
public class ProcedureDemoMapperTest extends AbstractJUnit4SpringContextTests {

    private ProcedureDemoMapper mapper;

    @Before
    public void setUp() {
        mapper = applicationContext.getBean(ProcedureDemoMapper.class);
    }

    @Test
    public void testMethod() {
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("param_name", "Kevin");

        mapper.testMethod(paramMap);
        System.out.println(paramMap.get("return_result"));
        // 输出结果为:Hello Kevin
    }

}

转载于:https://my.oschina.net/zhaokaiju/blog/818157

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值