`
liufangmeng
  • 浏览: 10487 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

mybatis3调用oracle存储过程

阅读更多

 

 今天用到了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存储过程 看下面就明白了

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;
	}

}

 

 

 

讲的很乱 希望能对碰到类似问题的同学有所帮助。。。

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    springboot mybatis 动态调用oracle存储过程,通过存储过程名称,就能动态调用存储过程、java动态调用or

    能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来...只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载

    springboot整合mybatis调用oracle存储过程

    至此,我们就完成了Spring Boot整合MyBatis调用Oracle存储过程并处理游标返回数据的过程。在实际开发中,可以根据需求调整存储过程的逻辑和结果处理方式,以满足各种复杂业务场景。注意,对于大数据量的查询,使用...

    ibatis调用oracle存储过程分页

    ibatis调用oracle存储过程分页

    Mybatis调用Oracle存储过程的方法图文详解

    Mybatis调用Oracle存储过程的方法详解 Mybatis是一款流行的持久层框架,广泛应用于Java企业级应用开发中。 Oracle存储过程是一种高效的数据库操作方式,通过存储过程可以实现复杂的业务逻辑操作。那么,如何使用...

    spring mybatis 调用oracle存储过程

    通过以上步骤,开发者可以在Spring和MyBatis环境中顺利地调用Oracle存储过程,实现复杂业务逻辑的处理。这不仅可以提高代码的可维护性,还能利用数据库的优势来优化性能。在进行这类操作时,一定要注意参数类型、...

    mybatis调用orclae存储过程

    下面将详细介绍如何使用MyBatis来调用Oracle存储过程。 ### 1. 创建Oracle存储过程 首先,我们需要在Oracle数据库中创建一个存储过程。例如,假设我们有一个名为`INSERT_EMPLOYEE`的存储过程,用于插入新的员工...

    Mybatis传list参数调用oracle存储过程的解决方法

    "Mybatis调用Oracle存储过程传List参数解决方法" Mybatis是当前最流行的持久层框架之一,它提供了强大的数据访问和操作功能。但是,如何将List类型参数传递给Oracle存储过程,实现批量插入数据却是一个棘手的问题,...

    Springboot调用Oracle存储过程的几种方式.docx

    在Spring Boot应用中,调用Oracle数据库的存储过程有多种方式。本文主要介绍三种方法,包括使用`entityManagerFactory.unwrap(SessionFactory.class).openSession()`、直接使用`EntityManager`的`...

    Java调用oracle存储过程通过游标返回临时表

    本篇文章将深入探讨如何使用Java调用Oracle存储过程,并通过游标获取存储过程中返回的临时表数据。 首先,Oracle存储过程是一种在数据库端执行的预编译SQL语句和PL/SQL代码集合。它可以接收参数、执行业务逻辑并...

    mybatis调用Oracle存储过程(无参、有入出参)等各种情况例子的详细使用方法

    mybatis调用Oracle存储过程(无参、有入出参)等各种情况例子的详细使用方法 1.无参存储过程调用 2.入参存储过程调用 3.出参存储过程调用 4.入 和 出 参存储过程调用,以及获取出参结果 5.结果集存储过程调用

    ibatis调用oracle存储过程

    在IT领域,特别是数据库操作与Java开发中,利用ibatis框架调用Oracle存储过程是一个常见的需求,这不仅能够提升代码的执行效率,还能增强应用程序的安全性。本文将深入解析ibatis如何与Oracle数据库中的存储过程进行...

    MyBatis调用存储过程

    MyBatis作为一款流行的Java持久层框架,提供了调用存储过程的功能。下面将详细介绍如何在MyBatis中配置和使用存储过程。 ### 1. 配置MyBatis XML映射文件 在MyBatis的映射文件(mapper.xml)中,我们需要为存储...

    Mybatis调用PostgreSQL存储过程实现数组入参传递

    总结起来,Mybatis调用PostgreSQL存储过程并处理数组参数的关键步骤包括: 1. 在PostgreSQL中创建带有数组参数的存储过程。 2. 自定义一个TypeHandler,实现对数组类型的转换。 3. 在Mybatis的Mapper XML中配置`...

    Java调用Oracle存储过程的方法

    本文将详细讲解如何使用Java调用Oracle存储过程,并提供示例代码。 首先,我们需要了解Java中用于与数据库交互的核心类,包括`java.sql.Connection`、`java.sql.CallableStatement`和`java.sql.Types`。`Connection...

    Java调用存储过程--传入集合参数

    通过本文的探讨,我们不仅了解了如何在Java中调用Oracle存储过程并传递集合参数的基本原理,还深入实践了相关的技术细节。这对于构建高性能、高可靠性的企业级应用而言,是不可或缺的知识点。在未来,随着数据量的...

    oracl存储过程以及mybatis的调用

    在本实验中,我们将讨论如何创建、测试Oracle存储过程,并在MyBatis框架中调用它。 首先,我们创建了一个名为`menus`的表,用于存储菜单数据。表结构包括以下字段:`id`(主键,整型)、`c_parent_id`(父ID,整型...

    MyBatis下调用存储过程并返回复杂结果集.docx

    MyBatis 调用 Oracle 存储过程返回复杂结果集 MyBatis 是一种基于 Java 的持久层框架,提供了对数据库的交互操作。然而,在 MyBatis 的官方文档中,并没有对如何调用 Oracle 存储过程的介绍,导致了网络上的资料...

    Ibatis调用Oracle存储过程返回自定义类型

    ### Ibatis调用Oracle存储过程返回自定义类型 在企业级应用开发中,尤其是在金融、保险等业务场景中,往往需要处理复杂的数据结构与逻辑。本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现...

Global site tag (gtag.js) - Google Analytics