----包声明
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
PROCEDURE proc_findResult(u_cursor OUT myrctype, u_id NUMBER);
FUNCTION fun_findResult(u_id NUMBER) return myrctype;
END pkg_test;
----包主体的声明
CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE proc_findResult(u_cursor OUT myrctype ,u_id NUMBER)
IS
sqlString VARCHAR2 (500);
BEGIN
IF u_id = 0 THEN
OPEN u_cursor FOR SELECT userId, userName, password, groupName FROM user_account ORDER BY userId;
ELSE
sqlString :='SELECT userId, userName, password, groupName FROM user_account where userId=:w_id';
OPEN u_cursor FOR sqlString USING u_id;
END IF;
END proc_findResult;
function fun_findResult(u_id NUMBER) RETURN myrctype
IS
u_cursor myrctype;
sqlString VARCHAR2 (500);
BEGIN
IF u_id = 0 THEN
OPEN u_cursor FOR SELECT userId, userName, password, groupName FROM user_account ORDER BY userId;
ELSE
sqlString :='SELECT userId, userName, password, groupName FROM user_account where userId=:w_id';
OPEN u_cursor FOR sqlString USING u_id;
END IF;
return u_cursor;
END fun_findResult;
END pkg_test;
/********************************************************************************
IBatis SQLMap 中的配置
********************************************************************************/
<resultMap id="userAccount" class="org.taink.entity.UserAccount" >
<result property="userId" column="userId" columnIndex="1"/>
<result property="userName" column="userName" columnIndex="2"/>
<result property="password" column="password" columnIndex="3"/>
<result property="groupName" column="groupName" columnIndex="4"/>
</resultMap>
输出参数也是配置在parametermap中
<!-- call procedure parameter
<parameterMap id="parameterMap" class="java.util.HashMap">
<parameter property="u_cursor" jdbcType="ORACLECURSOR"
javaType="java.sql.ResultSet" mode="OUT" />
<parameter property="u_id" jdbcType="NUMBER" javaType="java.lang.Integer" mode="IN"/>
</parameterMap>
-->
<!-- call procedure
<procedure id="test_cursor" parameterMap="parameterMap" resultMap="userAccount">
{call pkg_test.proc_findResult(?,?)}
</procedure>
-->
<!-- call function parameter -->
<parameterMap id="parameterMap" class="java.util.HashMap">
<parameter property="u_cursor" jdbcType="ORACLECURSOR"
javaType="java.sql.ResultSet" mode="OUT" />
<parameter property="u_id" jdbcType="NUMBER" javaType="java.lang.Integer" mode="IN"/>
</parameterMap>
<!-- call function -->
<procedure id="test_cursor" parameterMap="parameterMap" resultMap="userAccount">
{? = call pkg_test.fun_findResult(?)}
</procedure>
Dao layer java code
@SuppressWarnings("unchecked")
@Override
public List findAllUserAccountByProcOrFun(Map parameterMap) {
List result = null;
try {
result = super.sqlMapClient.queryForList("test_cursor",parameterMap);
} catch (SQLException e) {
System.out.println("-------------error-------------");
e.printStackTrace();
}
return result;
}
/********************************************************************************
java Test class
********************************************************************************/
public class TestProcOrFun {
public static void main(String[] args) {
IUserAccountDao userAccountDao = new UserAccountDaoImpl();
// find all object by procedure or function operation
Map parameterMap = new HashMap();
parameterMap.put("u_id", 15);
List accountList =
userAccountDao.findAllUserAccountByProcOrFun(parameterMap);
if (accountList.size()>0 ) {
for (Object temp : accountList) {
if (temp != null) {
System.out.println(((UserAccount)temp).toString());
}
}
} else {
System.out.println("result is null");
}
}
}
分享到:
相关推荐
iBatis调用存储过程
IBATIS调用存储过程
ibatis调用存储过程.txt [removed] var share_info = {}; [removed]
用ibatis调用存储过程的介绍,使用java语言进行开发
NULL 博文链接:https://jun1986.iteye.com/blog/1290064
Ibatis中调用其它的SQL语句很容易,那么如何在Ibatis中调用存储过程呢?
ibatis调用oracle存储过程分页
ibatis调用oracle存储过程
Ibatis调用Oracle存储过程,返回自定义的类型。
ibatis调用oracle的函数,存储过程的方法,从网上收集的,还没有整理。
NULL 博文链接:https://pzh244658240.iteye.com/blog/1423681
使用J2EE+Spring+Ibatis+JDBC 调用存储过程,并返回结果集的配置详细。 供学习参考。
里面包含ibatis开发指南,以及介绍ibatis调用存储过程,分页封装以及缓存策略等内容
iBatis 1、Spring嵌套iBatis框架 2、iBatis调用存储过程 3、iBatis中设置动态表查询 4、提高iBATIS性能的几个注意点
ibatis增删查改,存储过程调用。包含表结构。
NULL 博文链接:https://fengtiejun.iteye.com/blog/1603851
使用ibatis基本配置及连接数据库 进行增删改查 存储过程及分页模拟 根据配置文件输出sql日志
ibatis入门教程及调用存储过程实例详解。