mybatis替换oracle函数,Mybatis调用Oracle中的存储过程和function

本文详细介绍了如何使用Mybatis调用存储过程和函数。首先在数据库中创建了一个名为`pro_hello`的存储过程,然后在mapper.xml文件中配置了CALLABLE类型和参数类型。接着,在Java代码中通过HashMap传递参数并调用存储过程,获取输出结果。对于调用函数的情况,展示了带有返回值的Oracle函数`addStudent`的调用方式,以及如何处理返回值和参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Mybatis调用存储过程

1 在数据库中创建以下的存储过程

create or replace procedure pro_hello(p_user_name in varchar2,p_result out varchar2) is

begin

p_result := 'hello,' || p_user_name;

end;

2 编写SQL映射文件mapper.xml

statementType里的CALLABLE是标注此sql为存储过程。

parameterType是标注要传的参数,看了一些资料不写parameterType的话默认传map。还是加上比较清晰

{call pro_hello(#{uname,mode=IN,jdbcType=VARCHAR},#{result,mode=OUT,jdbcType=VARCHAR})}

3 编写JAVA代码调用存储过程

public class ProcedureTest {

public static void main(String[] args) throws IOException {

String resource = "mybatis.cfg.xml";

Reader reader = Resources.getResourceAsReader(resource);

SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);

SqlSession session = ssf.openSession();

try {

Map param = new HashMap();

param.put("uname", "zhangsan");

param.put("result", "");

String returnValue = (String) session.selectOne("User.proHello", param);

System.out.println("message=" + param.get("uname"));

System.out.println("result=" + param.get("result"));

System.out.println("returnValue=" + returnValue);

} catch (Exception e) {

e.printStackTrace();

} finally {

session.close();

}

}

}

二、Mybatis调用function

function带有返回值,假设一个oracle函数增加学生后返回成功与否的字符串

{#{result,mode=OUT,jdbvType=VARCHAR} = call

addStudent(#{num,mode=IN,jdbcType=DECIMAL},#{name,mode=IN,jdbcType=VARCHAR},#{rollInYear,mode=IN,jdbcType=Date},#{age,mode=OUT,jdbcType=INTEGER})}

StudentDTO除了上述出现的学生信息字段外还需要String类型的result字段。

原帖地址:

http://chenjc-it.iteye.com/blog/1443432

http://shen84121062.iteye.com/blog/1213857

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值