千家信息网

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