//例子一:只有输出参数
<!-- DB2 dataSource-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- jdbcTemplate -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
@Test
public void testRegisterCustomer() {
List<Map<String, Object>> locationInfo = (List<Map<String, Object>>) jdbcTemplate.execute(
"{call sp_rpt_satisfybyskill_new(?)}", new CallableStatementCallback() {
@Override
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
// 设置第一个输出参数的参数类型为游标类型
cs.registerOutParameter(1, OracleTypes.CURSOR);
// 执行存储过程
cs.execute();
// 获取第一个输出参数,从1开始
ResultSet rs = (ResultSet) cs.getObject(1);
List<Map<String, Object>> csList = new ArrayList<Map<String, Object>>();
// 转换每行的返回值到Map中
while (rs.next()) {
Map<String, Object> rowMap = new HashMap<String, Object>();
rowMap.put("zsnattachmentid", rs.getString("zsnattachmentid"));
rowMap.put("attachmentname", rs.getString("attachmentname"));
csList.add(rowMap);
}
rs.close();
return csList;
}
});
System.out.println(locationInfo);
}
--下面是REF游标和存储过程
CREATE OR REPLACE PACKAGE Pack_Service AS
TYPE t_RetDataSet IS REF CURSOR;
END Pack_Service;
CREATE OR REPLACE PROCEDURE Sp_Rpt_SatisfyBySkill_new
(
rCursor OUT Pack_Service.t_Retdataset -- 返回结果集
)
AS
exc_Param EXCEPTION;
BEGIN
OPEN rCurSor FOR
select t.zsnattachmentid as "zsnattachmentid",t.attachmentname "attachmentname" from zsnattachment t where t.zsnattachmentid in(2000000236,2000000239);
RETURN;
END;
//例子二:输入输出参数都有
@Test
public void testRegisterCustomer() {
List<Map<String, Object>> locationInfo = (List<Map<String, Object>>) jdbcTemplate.execute(
"{call sp_rpt_satisfybyskill_new(?,?,?)}", new CallableStatementCallback() {
@Override
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
//设置第一个输入参数的值
cs.setLong(1, 2000000236);
//设置第二个输入参数的值
cs.setLong(2, 2000000256);
// 设置第三个参数的参数类型为游标类型(registerOutParameter用来注册输出参数)
cs.registerOutParameter(3, OracleTypes.CURSOR);
// 执行存储过程
cs.execute();
// 获取第一个输出参数,3代表的是输出参数所在的位置
ResultSet rs = (ResultSet) cs.getObject(3);
List<Map<String, Object>> csList = new ArrayList<Map<String, Object>>();
// 转换每行的返回值到Map中
while (rs.next()) {
Map<String, Object> rowMap = new HashMap<String, Object>();
rowMap.put("zsnattachmentid", rs.getString("zsnattachmentid"));
rowMap.put("attachmentname", rs.getString("attachmentname"));
csList.add(rowMap);
}
rs.close();
return csList;
}
});
System.out.println(locationInfo);
}
CREATE OR REPLACE PROCEDURE Sp_Rpt_SatisfyBySkill_new(id_start number,
id_end number,
rCursor OUT Pack_Service.t_Retdataset -- 返回结果集
) AS
exc_Param EXCEPTION;
BEGIN
OPEN rCurSor FOR
select t.zsnattachmentid as "zsnattachmentid",
t.attachmentname "attachmentname"
from zsnattachment t
where t.zsnattachmentid between id_start and id_end;
RETURN;
END;
分享到:
相关推荐
jdbcTemplate分页彻底解决,使用游标滚动jdbcTemplate分页彻底解决,使用游标滚动
使用Spring的JdbcTemplate调用Oracle的存储过程
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
Spring jdbcTemplate调用Oracle存储过程返回List集合
execute 调用返回结果集存储过程 call 方法调用存储过程 前 言 1、关于 JdbcTemplate 的介绍、pom 依赖、DI 注入可以参考《Spring JdbcTemplate 模板剖析 之 常用 增删改查》,本文继续介绍 JdbcTemplate 调用...
JdbcTemplate 调用存储过程
JdbcTemplate使用就是JdbcTemplate的使用 再说两遍JdbcTemplate使用就JdbcTemplate的使用 20字够了
使用Spring的JdbcTemplate实现分页功能
主要介绍了使用jdbcTemplate查询返回自定义对象集合代码示例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
Spring框架中jdbcTemplate 的使用
配制Spring事务和JdbcTemplate使用 配制Spring事务和JdbcTemplate使用
本资源是一个完整的通过Servlet-Service-Dao-JdbcTemplate访问MySQL数据库的JavaWeb Project,可以直接导入到MyEclipse中进行调试运行,注意默认编译器是JDK1.6。
很基础的spring JDBCtemplate 的使用,包括不使用JDBCtemplate 和使用JDBCtemplate两种方法对比。
spring JdbcTemplate query方法使用示例,欢迎下载借鉴
JDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。 JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加...
JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等。spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现。 除了大量...
简单的jdbcTemplate预编译、回调等
简单介绍如何使用Spring Boot使用JdbcTemplate与MySQL进行数据库操作
SSH笔记-Spring JdbcTemplate,使用JdbcTemplate对数据库进行操作,使用具名参数和JDBC模板,简化操作