java调用oracle存储过程(ssm)

存储过程对于程序维护有诸多便利,以下即是java调用的Oracle存储过程的一种简单的方法。  

jdbc.properties:

#################### 服务名连接 ########################
jdbc.driver1=oracle.jdbc.driver.OracleDriver
jdbc.url1=jdbc:oracle:thin:@localhost:1521:wei
jdbc.user1=user
jdbc.password1=password

#################### 实例名连接 #######################
jdbc.driver2=oracle.jdbc.driver.OracleDriver
jdbc.url2=jdbc:oracle:thin:@//localhost:1521/wei
jdbc.user2=user
jdbc.password2=password

 

spring的配置文件:配置c3p0连接池

	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driver1}" /> 
		<property name="jdbcUrl" value="${jdbc.url1}" /> 
		<property name="user" value="${jdbc.user1}" /> 
		<property name="password" value="${jdbc.password1}" />
		<property name="initialPoolSize" value="6"></property>
		<property name="minPoolSize" value="2"></property>
		<property name="maxPoolSize" value="8"></property>
		<property name="acquireIncrement" value="2"></property>
		<property name="preferredTestQuery" value="select 1"></property>
		<property name="idleConnectionTestPeriod" value="90"></property>
		<property name="maxIdleTime" value="600"></property>
        <property name="maxIdleTimeExcessConnections" value="8"></property>
	</bean>

 在mapper.xml中调用存储过程时,要声明参数的类型,时输入参数还是输出参数:

<select id="getALL" statementType="CALLABLE" resultType="java.util.HashMap">
	{call ORACEL_WEI.SELECT_ALL(
	#{NAME,mode=IN,jdbcType=VARCHAR},
	#{CURSOR, mode=OUT,jdbcType=CURSOR} )}	
</select>

解析存储过程返回的结果:

public static List<Map<String, Object>> resultSet(Map<String, Object> map,String cursor) throws SQLException {
		
		ResultSet rs;
		ResultSetMetaData rsmd;
		int numberOfColumns;
		Map<String, Object> resultMap = new HashMap<String, Object>();
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		rs = (ResultSet) map.get("CURSOR");
		rs.clearWarnings();
		rsmd = rs.getMetaData();
		numberOfColumns = rsmd.getColumnCount();
		while (rs.next()) {
			resultMap = new HashMap<String, Object>(numberOfColumns);
			for (int r = 1; r <= numberOfColumns; r++) {
				resultMap.put(rsmd.getColumnName(r), rs.getObject(r));
			}
			list.add(resultMap);
		}
		rs.close();
		return list;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值