I have written code to run a query using JDBC on Spring but I get an exception (see below)
Here's my context.xml
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@Mohsen-PC:1521:mydb"/>
<property name="username" value="system"/>
<property name="password" value="123"/>
</bean>
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
</bean>
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"/>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
main.java
import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
class Main {
public static void main(String args[]) throws Exception {
ApplicationContext ac = new ClassPathXmlApplicationContext("context.xml");
DataSource dataSource = (DataSource) ac.getBean("dataSource");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
System.out.println(jdbcTemplate.queryForList("select EMPLOYEE_ID from EMPLOYEE",
Long.class));
}
}
The exception I see is:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'dataSource' defined in class path resource [context.xml]:
Error setting property values; nested exception is
org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException:
Property 'driverClassName' threw exception; nested exception is
java.lang.IllegalStateException: Could not load JDBC driver class
[oracle.jdbc.driver.OracleDriver] at
org.springframework.beans.factory.support.
AbstractAutowireCapableBeanFactory.applyPropertyValues(
AbstractAutowireCapableBeanFactory.java:1396)
EDIT: cut remainder of stack trace as the above exception is sufficient to illuminate the problem.
What is going wrong here?
Looks like you are missing the oracle jdbc driver in your classpath. Please download the jar file from this path and add this to your classpath.
EDITED
Spring jdbc is a template layer which works on top of the raw jdbc layer. It just provides us some utility methods to make the database access easier. This layer internally needs the jdbc layer to work so which every database you want to connect to that database's driver also has to be included, in your case you need to include Oracle driver.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With