Spring JDBC batch updates using JdbcTemplate?
You have seen coupld of Spring JDBC examples using JdbcTemplate in the previous examples. This page gives you an example on
batch updates using spring JdbcTemplate.
pom.xml file gives all required dependencies:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>SpringHelloWorld</groupId>
<artifactId>SpringHelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<spring.version>3.2.0.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
</dependencies>
</project>
|
Employee model class:
package com.java2novice.model;
public class Employee {
private int empId;
private String name;
private int salary;
private String dept;
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
}
|
Employee DAO interface:
package com.java2novice.dao;
import java.util.List;
import com.java2novice.model.Employee;
public interface EmployeeDao {
public void insertEmployeeRecoreds(List<Employee> emps);
}
|
Employee DAO implementation class: Note that below class extended JdbcDaoSupport, and didnot use JdbcTemplate directly.
We are calling batchUpdate() method on JdbcTemplate.
package com.java2novice.dao;
import java.util.ArrayList;
import java.util.List;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import com.java2novice.model.Employee;
public class EmployeeDaoImpl extends JdbcDaoSupport implements EmployeeDao{
@Override
public void insertEmployeeRecoreds(List<Employee> emps) {
String query = "insert into employee (name,salary,dept) values (?,?,?)";
List<Object[]> inputList = new ArrayList<Object[]>();
for(Employee emp:emps){
Object[] tmp = {emp.getName(), emp.getSalary(), emp.getDept()};
inputList.add(tmp);
}
getJdbcTemplate().batchUpdate(query, inputList);
}
}
|
Here is the xml based configuration file, look at mysql DB configurations:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/java2novice" />
<property name="username" value="user_name" />
<property name="password" value="password" />
</bean>
<bean id="employeeDAO" class="com.java2novice.dao.EmployeeDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
|
Here is the final demo class:
package com.java2novice.test;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.java2novice.dao.EmployeeDao;
import com.java2novice.model.Employee;
public class SpringDemo {
public static void main(String a[]){
String confFile = "applicationContext.xml";
ConfigurableApplicationContext context =
new ClassPathXmlApplicationContext(confFile);
EmployeeDao empDao = (EmployeeDao) context.getBean("employeeDAO");
List<Employee> inputs = new ArrayList<Employee>();
Employee e1 = new Employee();
e1.setName("John");
e1.setSalary(5000);
e1.setDept("Accounts");
inputs.add(e1);
Employee e2 = new Employee();
e2.setName("Amar");
e2.setSalary(15000);
e2.setDept("Engineering");
inputs.add(e2);
empDao.insertEmployeeRecoreds(inputs);
}
}
|
|