Java Reference
In-Depth Information
Listing 9-25.
CustomerItemPreparedStatementSetter.java
package com.apress.springbatch.chapter9;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.springframework.batch.item.database.ItemPreparedStatementSetter;
public class CustomerItemPreparedStatementSetter implements
ItemPreparedStatementSetter<Customer> {
public void setValues(Customer customer, PreparedStatement ps)
throws SQLException {
ps.setString(1, customer.getFirstName());
ps.setString(2, customer.getMiddleInitial());
ps.setString(3, customer.getLastName());
ps.setString(4, customer.getAddress());
ps.setString(5, customer.getCity());
ps.setString(6, customer.getState());
ps.setString(7, customer.getZip());
}
}
As Listing 9-25 shows, there is no magic involved in setting the values for each
PreparedStatement
.
With this code, you can update
formatJob
's configuration to write its output to the database. Listing 9-26
shows the configuration for the new ItemWriter.
Listing 9-26.
jdbcBatchWriter
's Configuration
…
<beans:bean id="jdbcBatchWriter"
class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<beans:property name="dataSource" ref="dataSource"/>
<beans:property name="sql" value="insert into customer (firstName,
middleInitial, lastName, address, city, state, zip) values (?, ?, ?, ?, ?, ?,
?)"/>
<beans:property name="itemPreparedStatementSetter"
ref="preparedStatementSetter"/>
</beans:bean>
<beans:bean id="preparedStatementSetter"
class="com.apress.springbatch.chapter9.CustomerItemPreparedStatementSetter"/>
…
As you can see in Listing 9-26, the new
jdbcBatchItemWriter
references the
dataSource
bean from
the
launch-context.xml
file (the customer table is in the same schema as the Spring Batch tables you use
for the JobRepository). The SQL value is the same as the SQL statement you previously defined in Listing
9-23. The last dependency you provide is the reference to the
CustomerItemPreparedStatementSetter
.
The final piece of the puzzle to configure the new ItemWriter is to update the configuration for the
step to reference the new ItemWriter. To do this, all you need to do is update
formatStep
's configuration