使用mybatis执行oracle存储过程

mybatis调用Oracle存储过程(给出无参、入参、出参调用等详细例子)——真的的保姆级别 阅读详情

存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验。

1.无输入和输出参数的存储过程,我写了一个比较简单的,需要注意的是Oracle无参存储过程不能写括号

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

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

<delete id="cascadeOperation" statementType="CALLABLE" >
	   {call cascadeoperation}
	</delete>

2.带有输入和输出参数的存储过程,我这里加入了if else的几个判断

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

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

Declare
Name  Varchar2(50);
Begin
queryteacher(3,'2',Name);
DBMS_OUTPUT.put_line(Name);
End;
/

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


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

<select id="queryTeacher" statementType="CALLABLE" parameterType="java.util.Map">
	   {call queryTeacher(#{fid,mode=IN,jdbcType=INTEGER},#{type,mode=IN,jdbcType=VARCHAR},#{name,mode=OUT,jdbcType=VARCHAR})}
	</select>

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

 Map<String,Object> mm=new HashMap<String,Object>();
 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)
As
begin
    open cur_arg for Select * From teacher;
End;

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

 <resultMap id="resultMap3" type="org.lxh.module.usefunction.info.Teacher">
	<result property="address" column="address"/>
	<result property="name" column="name"/>
	<result property="id" column="id"/>
   </resultMap>

<select id="getAllTeacherInfo" statementType="CALLABLE" parameterType="java.util.Map" >
	   {call GETTEACHER(#{result,jdbcType=CURSOR,mode=OUT,javaType=ResultSet, resultMap=resultMap3})}
	</select>


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

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

		}

下面是执行结果


到这里存储过程已经差不多了,研究了好久才弄出来,其他的用jdbc执行存储过程我随后会把文章添上来。奋斗


利用 IP 中的集成调试功能来调试 PCI Express 链接训练问题 JTAG Debugger”和“In-system IBERT”功能结合在一起即可提供即时信息,用于判断链接训练问题的可能原因。“test_rd.tcl”文件可读取 BRAM 中存储的调试数据,并输出 *.dat 文件,如下所示。同样,您可能看到某一箭头旁的数字较大,表明可能存在不稳定的链接。要采集 PCIe 链接眼图,请在 IP 配置 GUI 的“Add. Debug Options”选项卡中选择“启用 In-System IBERT (Enable In-System IBERT)”选项。 阅读详情

相关推荐

关于RT-Thread中PWM无法正常输出的学习

按照官方的PWM配置,并没有输出PWM,网上有比较多的办法,试了很多,有些还是不能实现输出,这里做个记录。记录自己完成PWM输出的过程,以及修改的地方。 关于STM32CubeMX配置就不多说了,网上有很多。 首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是RTT的一点小BUG吧 配上board.c中添加的代码,我用的是PA2定时2的通道3,需要使用的朋友修改对应定时器和GPIO! void HAL_TIM_Base_MspInit(TIM_Han

weixin_42566346的博客 3555

(五)MyBatis调用oracle存储过程

数据表Emp 创建存储过程(根据性别获取用户信息(游标集合)) create or replace procedure proc_emp( v_sex in char, cur_emp out sys_refcursor --定义返回类型类型是游标 ) is begin IF v_sex is null THEN --如果性别为空则查询所有 open cur_emp for select * from emp; ELSE open cur_emp

一宿君 6031

从Chimera到ChimeraX:科研绘图升级指南,让你的论文配图更专业

本文详细介绍了从UCSF Chimera升级到ChimeraX的科研绘图指南,帮助研究者提升论文配图质量。ChimeraX在渲染引擎、大分子处理能力和动画功能上具有显著优势,特别适合生命科学和结构生物学领域。文章涵盖材质设置、专业配色、工作流程和期刊适配等核心技巧,助力产出出版级分子可视化图像。

weixin_33670786的博客 934

mybatis调存储过程的方式(oracle)

hello,欢迎来到柚子的博客,本篇文章是mapper调Oracle存储过程的实现方式,下面来一起看下吧~提示:以下是本篇文章正文内容,下面案例可供参考以上就是今天要讲的内容,本文仅仅简单介绍了mapper调存储过程的方式,大家有好的方式也可以提出建议哦。

Java程序媛,欢迎大家一起交流学习~ 1236

【点云数据集】整理汇总(自用,更新ing)

涵盖了各种不同的城市场景:教堂、街道、铁路轨道、广场、村庄、足球场、城堡等等。邮件地址:dmich-request@graphics.stanford.edu,内容需包含:1. 您的姓名、头衔或职位,以及所在机构或隶属关系;license比较难获取,目前可获取的人员:(1)目前隶属于大学、工业研究实验室或其他主要机构的已发表过研究成果的研究人员;普林斯顿 ModelNet 项目的目标是为计算机视觉、计算机图形学、机器人技术和认知科学领域的研究人员提供全面、干净的物体 3D CAD 模型集合。

weixin_44392103的博客 797

【无标题】ReaxFF拟合参数以及算法安装

ReaxFF拟合参数以及算法安装

zmzyzm的博客 1419

mybatis调用oracle11g存储过程/函数

mybaits调用oracle11g存储过程/函数pom依赖log4j.propertiesentity实体类Mapper接口mybatis-config.xmlDeptMapper.xmloracle中的存储过程FindAllDeptById()find_all_dept()测试类DeptMapperTest pom依赖 oracle数据库版本为 11g,jdk1.8 <dependency> <groupId>org.projectlombok</groupId&g

输入技术、输出想法 2506

用Multisim仿真一个9V供电的双工对讲机:从电桥原理到LM1875功放调试全记录

本文详细介绍了使用Multisim仿真9V供电的双工对讲机全过程,涵盖电桥原理、NE5532前置放大设计、LM1875功放调试及双工通信实现。通过实战案例解析,帮助读者掌握模拟电路设计与调试技巧,提升电子工程实践能力。

weixin_28678831的博客 115

mybatis调用oracal存储过程最佳实践

注意:1.参数的传值通过map的key-value,key名称最好和存储过程的名称一致,或基于xml的映射规则,如ls_branchno->对应lsBranchno2.唤起存储过程是返回void,查询的结果通过游标写入传入的参数rs中,如果已有key,会覆盖,没有新建。3.out参数的course类型只能用resultMap来接,可以不写具体映射,指定type就行。

qq_50285932的博客 1209

微信小程序 - 最新实现项目适老化设计全流程及源码,老年模式大字版与常规版页面样式切换,老年人大字模式字体与布局更换关怀版解决方案(新老项目均适用的方案,全局页面统一修改文本字号/DOM排版元素等)

微信小程序,vue2,vue3,老年大字版设计,小程序开发如何实现适老化方案,放大字体字号及改变页面的布局,小程序关怀模式实现思路及代码,统一将布局都改了,全局修改字体大小适配老年人看不清问题,小程序怎么接入老年模式并根据模式改变页面的UI设计,实现全局修改字体大小适老化/关怀版改造,最新详细示例代码全流程,字体放大/缩小,老项目怎么适配老年人模式方案,小程序适老化设计指南,当切换成老年模式时页面所有排版都会发生变化,小程序vue开发,新手详细教程,老年模式字体设置思路和UI布局的设计,开发者可以通过wx.

🏆 前端领域优质创作者 7308

天爱验证码wasm验证码逆向

本文分析了某网站采用WASM加密技术的情况,发现其加密方式主要针对data和轨迹信息,整体加密逻辑变化不大。通过反混淆技术可以还原代码,并确认加密过程分为两步:先对原始参数逐个加密,再调用WASM模块进行最终加密。研究发现关键参数drives和ki都存储在WASM模块内,通过提取wasm_exec.js文件即可直接使用该加密功能。本文仅提供技术研究思路,强调严禁用于任何违法行为。

码王吴彦祖的博客 934

mybatis调用oracle存储过程

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34133829的博客 168

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

springmvc MyBatis 调用Oracle存储过程,使用Map传递参数

1.存储过程 CREATE OR REPLACE Procedure aaa(num In Varchar,Type In Varchar,Name Out Varchar) As Begin If Type='1' then Select channels Into Name From bdp_bi.xx_test Where nums=num; Else if Type='2' T

x1102845913的博客 3012

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

oracle 参数类型 存储过程 获取_oracle存储过程 参数类型

Oracle开发与使用文章收藏收集一些Oracle开发与使用文章,以便于后续查找.【基础类】1.ORACLE函数大全2.Orace常用函数3.oracle 日期函数介绍4.Oracle中常用的to_Char用法详解(有FMT的详细列表)5.ORACLE中日期和时间函数汇总(转载)6.SQL Server和Or...文章长征2号2017-03-061202浏览量Oracle开发与使用文章收藏收集一些...

weixin_39627361的博客 497

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

mybatis相关--mybatis调用oracle存储过程

博客原文:使用mybatis执行oracle存储过程 存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验。 1.无输入和输出参数的存储过程 我写了一个比较简单的,需要注意...

chouren4428的博客 236

mybaits调用存储过程

博客原文:使用mybatis执行oracle存储过程 存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验。 1.无输入和输出参数的存储过程 我写了一个比较简单的,需要注意的是Oracle无参存储过程不能写括号 CREATE OR REPLA

u012572955的专栏 2582

oracle执行存储过程,mybits xml 注解 调用存储过程

oracle执行存储过程,mybits xml 注解 调用存储过程

sv 1689

MyBatis调用存储过程

1.无输入和输出参数的存储过程 我写了一个比较简单的,需要注意的是Oracle无参存储过程不能写括号 CREATE OR REPLACE Procedure cascadeoperation As Begin  Delete From teacher Where id=1;  Update studentdetail Set address='宁波市海曙区' Where student

藏卜苦涩 2889

mybatis调用Oracle存储过程

1.创建Oracle存储过程完成库存加减操作,如果按equipType1和equipType2查询记录存在,则在原数量基础上进行增减;如果查询记录不存在,则新增一条记录。 存储过程创建如下:   CREATE OR REPLACE PROCEDURE "UPDATE_EQUIPMENT_STOCK" (P_EQUIP_TYPE1 IN NUMBER, P_EQUIP_TYPE2 IN...

ohyeahwzl的博客 456

java中使用jdbc和mybatis调用数据库中的存储过程和函数

目录   jdbc方式 Mybatis方式 jdbc方式 java代码: public static List&lt;Map&lt;String, Object&gt;&gt; doProcedure(String sql, Object... params) { Connection conn = null; CallableStatement cs = null; M...

米二的博客 2520

java调用存储过程 oracle_java调用oracle存储过程

java调用oracle存储过程java代码Map param = new HashMap();param.put("in_str", "1,2,3,4");//入参wxMapper.execProcedure(param);//调用存储过程,参数以map的形式传递String lsn = param.get("out_str");//出参mybatis的接口定义String execProced...

weixin_35160622的博客 202
上一篇: 使用Apache Http Server实现负载均衡并共享session
下一篇: jdbc处理游标以及2个常见异常
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值