今天用到了mybatis3 调用oracle的存储过程,这存储过程仅负责查询数据和返回查询结果
oracle的存储过程,如果要查询数据必须有一个游标供使用
先看下简单的存储过程
CREATE OR REPLACE PROCEDURE zdrqlx_PROC ( V_TEMP OUT zdrqlxPackage.zdrqlx_cursor ) AS BEGIN OPEN V_TEMP FOR SELECT LXMC FROM TBGW_ZHDRQFL ; END zdrqlx_PROC;
这个存储过程查询后 结果是 一列数据 列名 LXMC
下面贴查询mybatis的配置
<resultMap id="teshurenqunMap" type="bean.admin.menus.ZhongDianRenQunBean" > <result column="lxmc" property="lxmc" /> </resultMap> <select id="selectByMap" parameterType="map" statementType="CALLABLE" > { call zdrqlx_PROC(#{listinfo,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=teshurenqunMap})} </select>
程序调用的是selectByMap 这个方法 在调用的时候 需要传入一个参数 这里参数名是map ,map内可以什么属性都没有, 在mybatis调用存储过程后,会把数据 回塞给这个map
所以 如果你的程序是 Map resultmap = dao.selectByMap(map);
然后去读取resultmap ,结果会是null的 什么都没有,而数据实际上在被存在参数的map里面 而不是resultmap (map 是参数map,resultmap 是返回接收的) 这点很重要,我被卡住了半天!!!
下面是调用 看了上面一段话 下面的程序一目了然
Map map = new HashMap(); menusService.getToolsBarMunus(map);//这里调用selectByMap map.put("success", true); //这边数据会存在这个参数map里,是被回填的了 datas.append(com.alibaba.fastjson.JSON.toJSONString(map));
com.alibaba.fastjson.JSON.toJSONString(map)
这句话是用的json组件转化map得到string,结果是下面的
{"listinfo":[{"lxmc":"张三"},{"lxmc":"李四"},{"lxmc":"王五"}{"lxmc":"赵六"}]}
根据结果,反过来看调用存储过程
{ call zdrqlx_PROC(#{listinfo,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=teshurenqunMap})}
1. listinfo 这个是第一个参数,我是随意写的,不和任何东西管理,看下上面json转化后的map结果就明白了
2 mode=OUT 声明此参数作为输出类型
3 jdbcType=CURSOR 说明他是游标 因为这个存储过程主要是查询,需要传入一个游标参数,不信的话你在plsql里面test存储过程 看下面就明白了
4 javaType=java.sql.ResultSet, 貌似固定要求这样,求大神解答
5 resultMap 必须有这个参数 我这里配置的 是resultMap id="teshurenqunMap" 对应的
最后是我的bean 也就是resultMap 设置的type=
package bean.admin.menus; import java.util.List; public class ZhongDianRenQunBean { private String lxmc; public String getLxmc() { return lxmc; } public void setLxmc(String lxmc) { this.lxmc = lxmc; } }
讲的很乱 希望能对碰到类似问题的同学有所帮助。。。
相关推荐
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
ibatis调用oracle存储过程分页
主要介绍了Mybatis调用Oracle存储过程的方法介绍,需要的朋友可以参考下
在已有的spring+mybatis 基本操作oracle数据库的基础上,增加了3个调用存储过程的例子:无返回值、返回结果集、返回多个结果,希望对大家能有所帮助
mybatis调用orclae存储过程
springboot继承mybatis后,通过mybatis调用oracle数据库中创建的存储过程,并获取通过游标返回的数据。
怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据?接下来通过本文给大家介绍Mybatis传list参数调用oracle存储过程,需要的朋友可以参考下
mybatis调用Oracle存储过程(无参、有入出参)等各种情况例子的详细使用方法 1.无参存储过程调用 2.入参存储过程调用 3.出参存储过程调用 4.入 和 出 参存储过程调用,以及获取出参结果 5.结果集存储过程调用
Java调用Oracle存储过程的方法
oracle调用存储过程实现分页,分页,过程,存储,oracle
oracle存储过程的描述,亲自做的实验,写存储过程节约了调用浪费的时间
使用MyBatis框架配置Oracle和MySql中存储过程与函数的调用。 分别描述了两种方式的实现:基于XML方式和注解方式。 其中Oracle所使用版本为Oracle11g_XE版,MySQL为5.7版本
本人初步采用spring mvc3 mybatis3 extjs 3.4开发进销存软件,有很好的参考价值,其中数据库采用oracle,分页采用调用oracle的存储过程,有很好的学习价值,若是想开发简单的CRM和进销存系统是极品参考的系统。...
spring mvc mybatis extjs 3.4 权限管理 ,调用oracle存储过程作为分页,是进销存产品开发的最好的参考案例
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...
mybatis 各种增删改查,练习用的是oracle数据库,可以到oracle数据文件。 mybatis调用存储过程 mybatis由简单到多元 ,一对一,一对多 ,多对多 展示源码。
MyBatis | ORM框架 | http://www.mybatis.org/mybatis-3/zh/index.html MyBatisGenerator | 数据层代码生成 | http://www.mybatis.org/generator/index.html HikariCP | 数据库连接池 | ...
技术实现事务管理、服务日志、统一异常处理,在远程服务调用中使用RPC Context实现上下文管理,持久化框架采用Hibernate、Mybatis双框架兼容设计,使用数据访问代理服务,实现分库分表环境下的透明数据访问。...
│ Java面试题31.jdbc调用存储过程.mp4 │ Java面试题32.简单说一下你对jdbc的理解.mp4 │ Java面试题33.写一个jdbc的访问oracle的列子.mp4 │ Java面试题34.jdbc中preparedStatement比Statement的好处.mp4 │ Java...