- Spring JDBC - Discussion
- Spring JDBC - Useful Resources
- Spring JDBC - Quick Guide
- Spring JDBC - StoredProcedure
- Spring JDBC - SqlUpdate
- Spring JDBC - SqlQuery
- Spring JDBC - SimpleJdbcCall
- Spring JDBC - SimpleJdbcInsert
- NamedParameterJdbcTemplate
- Spring JDBC - RowMapper
- Spring JDBC - ResultSetExtractor
- PreparedStatementSetter
- Spring JDBC - JdbcTemplate
- Multiple Batches Operation
- Objects Batch Operation
- Spring JDBC - Batch Operation
- Spring JDBC - Handling CLOB
- Spring JDBC - Handling BLOB
- Spring JDBC - Calling Stored Function
- Calling Stored Procedure
- Spring JDBC - Delete Query
- Spring JDBC - Update Query
- Spring JDBC - Read Query
- Spring JDBC - Create Query
- Spring JDBC - First Application
- Spring JDBC - Configure Data Source
- Spring JDBC - Environment Setup
- Spring JDBC - Overview
- Spring JDBC - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
PreparedStatementSetter Interface
The org.springframework.jdbc.core.PreparedStatementSetter interface acts as a general callback interface used by the JdbcTemplate class. This interface sets values on a PreparedStatement provided by the JdbcTemplate class, for each of a number of updates in a batch using the same SQL.
Implementations are responsible for setting any necessary parameters. SQL with placeholders will already have been suppped. It s easier to use this interface than PreparedStatementCreator. The JdbcTemplate will create the PreparedStatement, with the callback only being responsible for setting parameter values.
Interface Declaration
Following is the declaration for org.springframework.jdbc.core.PreparedStatementSetter interface −
pubpc interface PreparedStatementSetter
Usage
Step 1 − Create a JdbcTemplate object using a configured datasource.
Step 2 − Use JdbcTemplate object methods to make database operations while passing PreparedStatementSetter object to replace place holders in query.
Example
Following example will demonstrate how to read a query using JdbcTemplate class and PreparedStatementSetter interface. We ll read available record of a student in Student Table.
Syntax
final String SQL = "select * from Student where id = ? "; List <Student> students = jdbcTemplateObject.query( SQL, new PreparedStatementSetter() { pubpc void setValues(PreparedStatement preparedStatement) throws SQLException { preparedStatement.setInt(1, id); } }, new StudentMapper());
Where,
SQL − Select query to read students.
jdbcTemplateObject − StudentJDBCTemplate object to read student object from database.
PreparedStatementSetter − PreparedStatementSetter object to set parameters in query.
StudentMapper − StudentMapper is a RowMapper object to map each fetched record to student object.
To understand the above-mentioned concepts related to Spring JDBC, let us write an example which will select a query. To write our example, let us have a working Ecppse IDE in place and use the following steps to create a Spring apppcation.
Step | Description |
---|---|
1 | Update the project Student created under chapter | .
2 | Update the bean configuration and run the apppcation as explained below. |
Following is the content of the Data Access Object interface file StudentDAO.java.
package com.tutorialspoint; import java.util.List; import javax.sql.DataSource; pubpc interface StudentDAO { /** * This is the method to be used to initiapze * database resources ie. connection. */ pubpc void setDataSource(DataSource ds); /** * This is the method to be used to pst down * a record from the Student table corresponding * to a passed student id. */ pubpc Student getStudent(Integer id); }
Following is the content of the Student.java file.
package com.tutorialspoint; pubpc class Student { private Integer age; private String name; private Integer id; pubpc void setAge(Integer age) { this.age = age; } pubpc Integer getAge() { return age; } pubpc void setName(String name) { this.name = name; } pubpc String getName() { return name; } pubpc void setId(Integer id) { this.id = id; } pubpc Integer getId() { return id; } }
Following is the content of the StudentMapper.java file.
package com.tutorialspoint; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; pubpc class StudentMapper implements RowMapper<Student> { pubpc Student mapRow(ResultSet rs, int rowNum) throws SQLException { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); return student; } }
Following is the implementation class file StudentJDBCTemplate.java for the defined DAO interface StudentDAO.
package com.tutorialspoint; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; pubpc class StudentJDBCTemplate implements StudentDAO { private DataSource dataSource; private JdbcTemplate jdbcTemplateObject; pubpc void setDataSource(DataSource dataSource) { this.dataSource = dataSource; this.jdbcTemplateObject = new JdbcTemplate(dataSource); } pubpc Student getStudent(final Integer id) { final String SQL = "select * from Student where id = ? "; List <Student> students = jdbcTemplateObject.query( SQL, new PreparedStatementSetter() { pubpc void setValues(PreparedStatement preparedStatement) throws SQLException { preparedStatement.setInt(1, id); } }, new StudentMapper() ); return students.get(0); } }
Following is the content of the MainApp.java file.
package com.tutorialspoint; import org.springframework.context.ApppcationContext; import org.springframework.context.support.ClassPathXmlApppcationContext; pubpc class MainApp { pubpc static void main(String[] args) { ApppcationContext context = new ClassPathXmlApppcationContext("Beans.xml"); StudentJDBCTemplate studentJDBCTemplate = (StudentJDBCTemplate)context.getBean("studentJDBCTemplate"); Student student = studentJDBCTemplate.getStudent(1); System.out.print("ID : " + student.getId() ); System.out.println(", Age : " + student.getAge()); } }
Following is the configuration file Beans.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" xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd "> <!-- Initiapzation for data source --> <bean id = "dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name = "driverClassName" value = "com.mysql.cj.jdbc.Driver"/> <property name = "url" value = "jdbc:mysql://localhost:3306/TEST"/> <property name = "username" value = "root"/> <property name = "password" value = "admin"/> </bean> <!-- Definition for studentJDBCTemplate bean --> <bean id = "studentJDBCTemplate" class = "com.tutorialspoint.StudentJDBCTemplate"> <property name = "dataSource" ref = "dataSource" /> </bean> </beans>
Once you are done creating the source and bean configuration files, let us run the apppcation. If everything is fine with your apppcation, it will print the following message.
ID : 1, Age : 17Advertisements