MyBatis中调用存储过程和函数

MyBatis中调用存储过程和函数
一.调用存储过程
   1.首先在数据库中定义存储过程,定义的存储过程的代码如下:
//定义存储过程
create or replace procedure pag_add(p1 varchar2,p2 varchar2,p3 out varchar2)
as
begin
p3:=p1+p2;
end;

//定义函数
create or replace function fun_add(p1 number ,p2 number)
  return number
  as
begin
    return p1+p2;
end;
 
2.通过接口映射Sql,定义接口
package cn.et.mybatis.lesson02.func;

import java.util.List;
import java.util.Map;
public interface CallMapper {// public void queryEmp(Map map);
//查询存储过程的方法
public void callProcedure(Map map);
//查询函数的方法
public void callFunction(Map map);
}
 
 
3.定义映射文件

<?xml version="1.0" encoding="UTF-8" ?> { call pag_add( #{p1,mode=IN,jdbcType=NUMERIC}, #{p2,mode=IN,jdbcType=NUMERIC}, #{p3,mode=OUT,jdbcType=NUMERIC} ) } { call prg_add( #{p1,mode=IN,jdbcType=NUMERIC}, #{p2,mode=IN,jdbcType=NUMERIC}, #{p3,mode=OUT,jdbcType=NUMERIC} ) } { #{p3,mode=OUT,jdbcType=NUMERIC}=call fun_add( #{p1,mode=IN,jdbcType=NUMERIC}, #{p2,mode=IN,jdbcType=NUMERIC} ) }  4.定义主mybaits.xml文件 <?xml version="1.0" encoding="UTF-8" ?>    5.定义测试类 package cn.et.mybatis.lesson02.func;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
public class TestMyBatis {
//封装session的返回
public static SqlSession getSession(){
String resource = “/cn/et/mybatis/lesson02/mybatis.xml”;
InputStream inputStream =TestMyBatis.class.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//操作数据库的类 SqlSession
SqlSession session=sqlSessionFactory.openSession();
return session;
}
//调用存储过程
public static void main(String[] args) throws IOException {
SqlSession session=getSession();
CallMapper cm=session.getMapper(CallMapper.class);
Map map=new HashMap();
map.put(“p1”, 100);
map.put(“p2”, 200);
cm.callProcedure(map);
System.out.println(map.get(“p3”));
}

@Test
//调用函数
public void funTest(){
    SqlSession session=getSession();
    CallMapper cm=session.getMapper(CallMapper.class);
    Map map=new HashMap();
    map.put("p1", 100);
    map.put("p2", 400);
    cm.callFunction(map);
    System.out.println(map.get("p3"));
}

}
以上为存储过程和函数的调用
//查询函数的方法public void callFunction(Map map);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值