This section is about SimpleJdbcTemplate and it's use in database handling in Spring.
This section is about SimpleJdbcTemplate and it's use in database handling in Spring.The SimpleJdbcTemplate has all the features of old JdbcTemplate and also support some features of Java 5 i.e varargs and autoboxing. It best suited when you need not to access all the feature of JdbcTemplate. It has a simpler API and basically construct to support java 5.Thats why it has more method to exploit varargs.
The getJdbcOperations() method is used to access those methods which are defined in JdbcTemplate. You have to call these method on SimpleJdbcTemplate . The main drawback is that you need to cast these methods as the methods on JdbcOperations interface are not genric.
EXAMPLE
In this example , we are fetching record using SimpleJdbcTemplate. We are using row mapper to map current row. It is using "Emp" class object to set and get the current row record.
SimpleJTemplate.java
package net.roseindia; import java.sql.ResultSet; import java.sql.SQLException; import javax.sql.DataSource; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; public class SimpleJTemplate { private SimpleJdbcTemplate simpleJdbcTemplate; public void setDataSource(DataSource dataSource) { this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource); } public Emp findEmp(String specialty, int age) { String sql = "select id, first_name, last_name from skills" + " where specialty = ? and age = ?"; RowMappermapper = new RowMapper () { public Emp mapRow(ResultSet rs, int rowNum) throws SQLException { Emp emp = new Emp(); emp.setId(rs.getLong("id")); emp.setFirstName(rs.getString("first_name")); emp.setLastName(rs.getString("last_name")); System.out.print(rs.getLong("id") + " "); System.out.print(rs.getString("first_name") + " "); System.out.print(rs.getString("last_name")); return emp; } }; return this.simpleJdbcTemplate.queryForObject(sql, mapper, specialty, age); } }
SimpleJTemplate.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="SJT" class="net.roseindia.SimpleJTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://192.168.10.13:3306/ankdb" />
<property name="user" value="root" />
<property name="password" value="root" />
</bean>
</beans>
SimpleJTemplateMain.java
package net.roseindia; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class SimpleJTemplateMain { public static void main(String[] args) { XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource( "SJTemplate.xml")); SimpleJTemplate myBean = (SimpleJTemplate) beanFactory.getBean("SJT"); myBean.findEmp("Spring", 25); } }
OUTPUT
Database table 'skills' :
Eclipse console after code execution :