千家信息网

mybatis中如何调用oracle存储过程

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,今天就跟大家聊聊有关mybatis中如何调用oracle存储过程,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.无输入和输出参数的存储过程我
千家信息网最后更新 2026年10月31日mybatis中如何调用oracle存储过程

今天就跟大家聊聊有关mybatis中如何调用oracle存储过程,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1.无输入和输出参数的存储过程

我写了一个比较简单的,需要注意的是Oracle无参存储过程不能写括号

CREATE OR REPLACE Procedure cascadeoperationAsBegin Delete From teacher Where id=1; Update studentdetail Set address='宁波市海曙区' Where studentid=10;End;

这里执行了2个操作,可能用过mybatis的人会迷惑执行的时候到底使用update标签呢还是delete标签,其实都行,我也试过select标签也是OK的,下面是部分的配置文件

           {call cascadeoperation}        

2.带有输入和输出参数的存储过程

,我这里加入了if else的几个判断

CREATE OR REPLACE Procedure queryTeacher(fid In Integer,Type In Varchar,Name Out Varchar)AsBeginIf Type='1' thenSelect Name Into Name From student Where id=fid;Else if Type='2' ThenSelect Name Into Name From teacher Where id=fid;Else  Name:='错误';End If;End If;End;

下面顺便把我在命令行窗口执行的存储过程语句贴出来

DeclareName  Varchar2(50);Beginqueryteacher(3,'2',Name);DBMS_OUTPUT.put_line(Name);End;/

执行过类似语句的时候可能看不到任何的输出,不要着急只需在命令行使用set serveroutput on;

看到结果了吧,下面使用mybatis来执行这个存储过程,下面是映射文件的写法

那怎么取得返回的内容呢,其实只要存储过程执行后map里就有值了,java代码大致如下

Map mm=new HashMap(); mm.put("fid", 3); mm.put("type", 2); m.queryTeacher(mm); System.out.println(mm.get("name"));

存3.返回游标的存储过程

还有一种存储过程,它可以返回一个游标就类似一个集合这种

CREATE OR REPLACE Procedure getTeacher(cur_arg out Sys_Refcursor)Asbegin    open cur_arg for Select * From teacher;End;

这种情况,在mybatis里就稍微有些不同了,此时jdbcType就是CURSOR,javaType则是ResultSet了,这里还可以把结果转成resultMap了,如下所示

                           

这里的话Java代码就稍微复杂一些

Map map = new HashMap();                m.getAllTeacher(map);                Set> set = map.entrySet();                for (Iterator> it = set.iterator(); it                                .hasNext();) {                        Map.Entry entry = (Map.Entry) it                                        .next();                        // System.out.println(entry.getKey() + "--->" +                        // (Teacher)entry.getValue());                        List t = (List) entry.getValue();                        Iterator itera = t.iterator();                        while (itera.hasNext()) {                                Teacher tt = itera.next();                                System.out.println(tt.getName() + "," + tt.getAddress());                        }                }

返回游标 可以直接用下面的方法 上面原作者的写法 太麻烦了

        Map map = new HashMap();        map.put("jid", jid);        userInfoMapper.getFriendList(map);        //result 为在mybatis xml文件时 写的返回结果名        List list = (List)map.get("result");        return list;

看完上述内容,你们对mybatis中如何调用oracle存储过程有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

过程 存储 内容 文件 标签 游标 结果 输出 代码 写法 参数 命令 时候 语句 输入 不同 复杂 着急 原作 原作者 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 深圳九邦互联网科技有限公司 华服互联网科技怎么样 云信互联网科技有限公司 互联网的科技 互联网下的科技发展 金诺互联网科技 网络科技有限互联网 互联网医疗科技 礼当家互联网科技 智慧科技互联网 居家互联网科技有限公司 美国互联网前沿科技 四个字互联网科技公司取名 互联网和高科技公司 恒银科技与互联网金融 成都铂石互联网科技做什么的 洛阳昕诺飞互联网科技有限公司 深圳市优智互联网科技有限公司 云南省自由互联网科技有限公司 上海睿民互联网科技有限公司 亿人帮互联网科技有限公司 上海卓越科技互联网 广州百单互联网科技有限公司 科技金融是不是互联网金融 卓越科技(互联网 ) 武汉健翔互联网络科技有限公司 坤平互联网科技 呼和浩特新华互联网科技学院 米聚互联网科技南京有限公司排面
0