Java中使用ibatis调用Oracle存储过程和函数
来源:互联网 发布:apache ignite 编辑:程序博客网 时间:2024/05/17 08:17
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) isBEGIN 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里,输出参数作为键来访问取得
0 0
- Java中使用ibatis调用Oracle存储过程和函数
- oracle--在java中调用存储过程和存储函数
- java中使用ibatis来调用存储过程(上)
- java中使用ibatis来调用存储过程(下)
- ibatis调用oracle存储过程
- Ibatis调用Oracle存储过程
- Java中调用Oracle存储过程及存储函数
- 在应用程序中调用Oracle存储过程和存储函数
- Java调用Oracle数据库存储过程和存储函数
- Oracle存储过程、存储函数以及Java程序调用存储过程和存储函数
- ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标
- ibatis调用oracle的函数、存储过程的方法 in和out游标
- ibatis调用oracle的函数,存储过程的方法_IN_和OUT_游标
- ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标
- Oracle存储过程详解(四)-ibatis中调用
- ibatis调用Oracle中的存储过程和function
- java下实现调用oracle的存储过程和函数
- java下实现调用oracle的存储过程和函数
- Android 混淆代码总结
- Java并发编程系列之三十:多线程的代价
- python数据分析中出现的奇怪的bug
- The specified bucket is not valid
- 一个简单的自定义TopBar
- Java中使用ibatis调用Oracle存储过程和函数
- SharePoint的创建
- android 读取,清除缓存通用于所有手机 解决空指针
- Unity环境搭建Photon服务器
- Java NIO Scatter / Gather
- SublimeText 3 packagecontrol installation#st3
- 将yuv转成png图
- openfire 成功安装后无法启动,无法访问http://ip:9090
- 一行代码解决ie浏览器弹出允许阻止控件问题