Java中使用ibatis调用Oracle存储过程和函数_ibatis 调用函数-程序员宅基地

技术标签: Java与ibatis  



Hibernate等提供了全面的数据库封装机制的“全自动化”ORM 实现,“全自动”ORM 实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行。
ibatis是“半自动化”,并不会为程序员在运行期自动生成 SQL 执行。具体的 SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO。比较灵活给程序员更多的发挥空间。

以下代码使用ibatis-sqlmap-2.jar,在Windows的Tomcat里测试通过,在Linux下的Weblogic里测试通过。

一、使用ibatis调用Oracle存储过程
1、创建测试存储过程,名称:TestPro

CREATE OR REPLACE PROCEDURE TestPro(myLevel IN VARCHAR2, myResult out  PLS_INTEGER) is

BEGIN
  myResult:=0;  
  if myLevel = 'a' then 
     myResult:=0;
  end if;
  
  if myLevel = 'b' then 
     myResult:=-1;
  end if;
  
  if myLevel = 'c' then 
     myResult:=1;
  end if;
END;

2、调用存储过程的SqlMap文件配置

<parameterMap id="testProParamMap" class="java.util.HashMap">
	<parameter property="myLevel" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
	<parameter property="myResult" jdbcType="NUMERIC" javaType="java.lang.Integer" mode="OUT" />
</parameterMap>
<procedure id="testOraclePro" parameterMap="TestProParamMap">
	{call TestPro(?,?)} 
</procedure>

3、调用存储过程的DAO层代码

public Object TestProDao(Map map) {
	return getSqlMapClientTemplate().queryForObject("ticket.testOraclePro", map);
}

4、前台调用

Map mapPro = new HashMap();
mapPro.put("myLevel", "b");
Object rs=xxxxDao.TestProDao(mapPro);
LogUtil.debug("rs="+rs);
LogUtil.debug("myResult="+mapPro.get("myResult"));

结果:
rs=null
myResult=-1
从测试结果看,返回结果是在Map里,输出参数作为键来访问取得

二、使用ibatis调用Oracle函数

1、创建测试函数,名称:TestFun

CREATE OR REPLACE FUNCTION TestFun(myLevel IN VARCHAR2)
  RETURN NUMBER AS

  myResult      PLS_INTEGER := 0;

BEGIN
  if myLevel = 'a' then 
     myResult:=0;
  end if;
  
  if myLevel = 'b' then 
     myResult:=-1;
  end if;
  
  if myLevel = 'c' then 
     myResult:=1;
  end if;
  return myResult;
END;
2、调用函数的SqlMap文件配置

<parameterMap id="testFunParamMap" class="java.util.HashMap">
	<parameter property="myResult" jdbcType="NUMERIC" javaType="java.lang.Integer" mode="OUT" />
	<parameter property="myLevel" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
</parameterMap>
<procedure id="testOracleFun" parameterMap="TestFunParamMap">
	{? = call TestFun(?)} 
</procedure>
3、调用函数的DAO层代码

public Object TestFunDao(Map map) {
	return getSqlMapClientTemplate().queryForObject("ticket.testOracleFun", map);
}
4、前台调用

Map mapFun = new HashMap();
mapFun.put("myLevel", "b");
Object rs=xxxxDao.TestProDao(mapFun);
LogUtil.debug("rs="+rs);
LogUtil.debug("myResult="+mapFun.get("myResult"))
结果:
rs=null
myResult=-1
从测试结果看,返回结果是在Map里,输出参数作为键来访问取得

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aspnet2002web/article/details/51136049

智能推荐

bootstrap框架基础知识2_bootstrap form action-程序员宅基地

bootstrap思维导图Bootstrap简介1.来自Twitter,是目前最流行的前端框架2.是基于HTMl,CSS,javascript的一个简洁灵活的开源框架,便于人员随时上手3.目前版本V3bootstrap受欢迎的原因1.快速制作响应的网页来适配各种终端2.开发简单,方便3.移动先行4.代码开源5.代码有良好是规范1.支持Internet Expore..._bootstrap form action

基于粒子滤波的目标跟踪基本算法(Matlab)_粒子滤波目标跟踪算法matlab-程序员宅基地

function [hist]=FHist(temp,D) % 此函数为提取区域目标色彩直方图% temp-目标区域% D-颜色空间位数% m_wei(i,j)-像素点权值贡献% hist-色彩直方图分布E=256/D;hist=zeros(1,D^3);[a,b,c]=size(temp);y(1)=a/2;y(2)=b/2;m_wei=zeros(a,b);%权值矩_粒子滤波目标跟踪算法matlab

ARTS Share-1 移除java List中的所有null值_arrayutils去除所有null-程序员宅基地

今天分享移除List中NULL值的方法,因为在开发中有个需求遇到了,所以做了一下总结:针对于JDK7及以下版本可以使用如下的方法进行操作:public static void removeAllNullsFromList() { //利用Arrays类将一个数组转为list,然后将该list作为ArrayList的构造函数参数传入,创建ArrayList L..._arrayutils去除所有null

详解二分法和迭代法求平方根。通俗解释-程序员宅基地

#include #include #include using namespace std; #define eps 0.001 int main() { int N; cin >> N; double N_f = ( double ) N; double lower = 0.0;

Java图形化GUI界面_java在图形界面的优势-程序员宅基地

一、GUI是什么GUI的全称为Graphical User Interface,图形化界面或图形用户接口,是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用人们从此不再需要死记硬背大量的命令,取而代之的是通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。1、 不流行的主_java在图形界面的优势

vc6.0 /mfc中的错误:see declaration of 'AFX_MSGMAP 、GetMessageMap 、syntax error : missing '; ' before '* '-程序员宅基地

解决方法是:检查自己在源文件中的函数实现过程的先后顺序是不是搞错了

随便推点

互联网广告请求链路_广告计费系统容灾设计(上)-数据流&amp;系统-程序员宅基地

互联网广告系统本身是一个对稳定性和可靠性要求极高的系统,每天面对数十亿级别的请求,广告投放主多样的投放方式变化与用户关注点及兴趣频繁的更新,同时对时效性要求严格,而作为电商广告的计费系统,则要求更加严格, 从打点到计费任何一环节出现问题,都会带来巨大的经济损失和平台信任度危机,涉及到商家账户资金,系统实时反作弊和防刷,亿级别点击(曝光)等高效稳定账务扣费,数据的强一致性和最终一致性的保证及全链路高..._广告系统的的稳定性

SIZEOF-程序员宅基地

(ZZ from http://www.gridchina.org/~wfsun/blog/archives/000658.html)SIZEOF--------------------------------------------------------------------------------------------------------关键字:sizeof,字节对齐,多继承

《操作系统真象还原》第五章 ---- 轻取物理内存容量 启用分页畅游虚拟空间 力斧直斩内核先劈一角 闲庭信步摸谈特权级_jc .error_hlt_Love 6的博客-程序员宅基地

文章目录相关查阅博客本书中错误勘误部分缩写熟知 + 小建议修改代码前的小闲聊修改loader.S(读取内存大小)检验是否成功读取内存大小开始分页新篇章的分页理解一级页表二级页表修改loader.S(开启分页)检验是否完成分页 进入虚拟内存时代修改Loader.S(加载内核)1、编写内核程序(main.c)2、从磁盘读入内核区代码3、修改Loader.S(转移内核代码 跳转至内核)1、新函数rd_disk_m_322、处理文件头elfLoader.S(全代码)+boot.inc(代码修改)结束语(第五章完结撒_jc .error_hlt

安装Win7系统时硬盘分区有学问-程序员宅基地

安装Win7系统时硬盘分区有学问更新时间:2009-11-10 来源:计算机应用网 现在已经到九月了,离Windows7正式发布仅仅有一个月的时间。随着RTM版本的发布,相信更多的朋友都已经体验并且喜欢上了这一款最新的操作系统,正在等待正式版的发布。安装一个新的系统,硬盘分区是最基础的一件事情,安装Windows7如何来分区,如何替原来的盘符

java乘法口诀编程题_java编程题打印九九乘法表-程序员宅基地

下面给大家带来的java编程题是和打印九九乘法表相关的内容,那么打印九九乘法表用java如何来编写呢?一起来了解一下吧!一、题目打印九九乘法表二、代码实现publicclassMultiplication_table{staticvoidmultiplication_table(){inti,j;for(i=1;i<=9;i++){for(j=1;j<...

【题解报告】ZJNU CF训练[2021/1/27]_e - tcmcf+++_dyy7777777的博客-程序员宅基地

目录A-眼花缭乱黑白配(CF 40A)B-寻找n边形(CF 45I)C-小孩子才做选择题(CF 1096C)D-其实并不难的博弈(CF 197A)E-简单的周长计算(CF 224A)F-有些巧妙的DP(CF 1452D)G-动物(CF 35D)H-序列排队(CF 1241D)I-立方体(CF 166E)J-~~下班快乐~~ 回家快乐 (CF 550C)A-眼花缭乱黑白配(CF 40A)链接: CF40A Find Color题意: 判断落点的颜色。题解: 签到题,咕。代码:#include&l_e - tcmcf+++