Привет, я новичок в Spring. Я пытался получить доступ к сохраненному процессу с помощью CallableStatementCreator, но я получаю следующую ошибку.
вызвано:
org.springframework.beans.factory.BeanCreationException:
Ошибка создания бина с именем
'SampleDataSource' определен в классе
ресурс пути
[StoredProcCallApplication-config.xml]:
Не удалось установить бин; вложенными
исключение
java.lang.NoClassDefFoundError:
орг / апач / Обще / бассейн / осущ / GenericObjectPool
StoredProcCall.java
package Utility;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import oracle.jdbc.driver.OracleTypes;
import org.springframework.jdbc.core.CallableStatementCreator;
public class StoredProcCall implements CallableStatementCreator {
@Override
public CallableStatement createCallableStatement(Connection arg0)
throws SQLException {
// TODO Auto-generated method stub
CallableStatement cs=arg0.prepareCall("call test_proc(?,?)");
cs.setString(1,"Vivek");
cs.registerOutParameter(2, OracleTypes.CURSOR);
return cs;}}
TestCallImpl.java
package com;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import Utility.StoredProcCall;
import oracle.jdbc.driver.OracleTypes;
import Utility.StoredProcCall;
public class TestCallImpl {
StoredProcCall storedproccall=null;
JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource)
{this.jdbcTemplate=new JdbcTemplate(dataSource);
}
public StoredProcCall getstoredproc()
{
return storedproccall;
}
public void setstoredproc(StoredProcCall storedproccall)
{
this.storedproccall=storedproccall;
}
public void callProc()
{
List l=new ArrayList();
l.add(new SqlParameter("ename",OracleTypes.VARCHAR));
l.add(new SqlOutParameter("cur",OracleTypes.CURSOR,new RowMapper()
{
@Override
public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
// TODO Auto-generated method stub
Map m=new HashMap();
m.put("empno",arg0.getInt("empno"));
m.put("ename",arg0.getString("ename"));
return m; }}));
Map results=this.jdbcTemplate.call(new StoredProcCall(),l);
results.put("ename","Vivek");
System.out.println(results.get("ename"));}}
StoredProcCallApplication-config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans --->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
<property name="dataSource" ref="SampleDataSource">
</property> </bean>
<bean id="SampleDataSource" class="org.apache.commons.dbcp.BasicDataSource" scope="singleton">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@servername"/>
<property name="username" value="admin" />
<property name="password" value="admin" />
</bean>
<bean id="storedproccall" class="Utility.StoredProcCall">
</bean>
<bean id="TestClass" class="com.TestCallImpl">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean> </beans>