栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

SpringBoot调用Oracle存储过程(入参,出参)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot调用Oracle存储过程(入参,出参)

目录

1.创建存储过程

2.编写Mybatis的XML

3.编写测试Controller

1.创建存储过程
CREATE OR REPLACe PROCEDURE getlist_ascs21 (
		cardNo IN VARCHAR2,
		v_cursor out sys_refcursor
		)
		is 
		begin
		open v_cursor for 
		
		SELECT
             LAST_UPDATE_DTIME,
             DTYPE,
             ORG_CODE
             --省略字段。。。。
             FROM
                 --省略复杂的sql语句
               AND BASE.ID_NO = cardNo --入参
               ) T
              ORDER BY org_code,
              DTIME DESC;
	 end;

sys_refcursor是系统定义的一个refcursor,将查询出来复杂的结果集通过sys_refcursor返回给客户端。

2.编写Mybatis的XML
	
  1. id:唯一指定标签的名字
  2. parameterType:给sql语句传递参数的数据类型
  3. statementType:CALLABLE,执行存储过程

resultMap:配置返回游标中别名对应的resultMap,一一映射,配置如下:

	
		
		
		
        
	

对应mapper接口的方法:

这里的mapper接口的方法没有写对应的返回值,因为对应的结果直接封装在result中了,可以直接从map中直接拿到。

    void getlistss(Map map);

3.编写测试Controller

这里直接测试,省略Service,直接调用mapper,对应的代码如下:

    @ApiOperation("测试")
    @GetMapping("test")
    public Result test(String cardNo) {
        HashMap hashMap = new HashMap<>();
        hashMap.put("cardNo",cardNo);
        hashMap.put("result",hashMap);
        hospServerMapper.getlistss(hashMap);
        ArrayList> cursorList = (ArrayList>)                         
        hashMap.get("result");
        if(cursorList!=null&&cursorList.size()!=0){
        for (Map cursor : cursorList) {
                System.out.println(cursor.get("LAST_UPDATE_DTIME")+"t"+cursor.get("DTYPE")+"t"+cursor.get("ORG_CODE"));
            }
        }
        return Results.success("查询成功");
    }

利用map进行参数的传递,hashMap.get("result")获取结果集,这里的result必须和xml中的配置一样。

打开swagger进行测试,结果如下:

 控制台输出如下:

希望文章能够帮助你!如果有错误,记得评论提醒我修改,谢谢!。

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1041069.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号