PreparedStatementCallback interface:
The PreparedStatementCallback is a generic callback interface for code that operates on a PreparedStatement. Allows to execute any number of operations on a single PreparedStatement i.e. a single executeUpdate call or repeated executeUpdate calls with varying parameters.
We pass the PreparedStatementCallback’s instance in the execute method for executing parameterized queries.
Syntax:
public T execute(String sql,PreparedStatementCallback<T>);
Where T represents the return type.
Method of PreparedStatementCallback interface:
public T doInPreparedStatement(PreparedStatement ps)throws SQLException, DataAccessException
Example
package com.w3schools.SpringDB; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; @SpringBootApplication public class SpringDbApplication { private static ApplicationContext applicationContext; public static void main( String[] args ) { applicationContext = SpringApplication.run(SpringDbApplication.class, args); performDBOperation(); } private static void performDBOperation(){ JDBCController jdbcController = (JDBCController) applicationContext.getBean("jDBCController"); Users user = new Users(); user.setSeq(15); user.setUsername("Vishal"); user.setPassword("v123"); jdbcController.insertData(user); } } |
package com.w3schools.SpringDB; import java.sql.PreparedStatement; import java.sql.SQLException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCallback; import org.springframework.stereotype.Repository; @Repository("jDBCController") public class JDBCController { @Autowired JdbcTemplate jdbc; public void insertData(Users user){ String query="insert into users values(?,?,?)"; jdbc.execute(query,new PreparedStatementCallback<boolean>(){ @Override public Boolean doInPreparedStatement(PreparedStatement ps) throws SQLException { ps.setInt(1,user.getSeq()); ps.setString(2,user.getUsername()); ps.setString(3,user.getPassword()); return ps.execute(); } }); System.out.println("Data inserted Successfully"); } } |
package com.w3schools.SpringDB; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name= "USERS") public class Users { private int seq; private String username; private String password; @Id @GeneratedValue @Column(name = "SEQ", unique = true, nullable = false) public int getSeq() { return seq; } public void setSeq(int seq) { this.seq = seq; } @Column(name = "USER_NAME") public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Column(name = "PASSWORD") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } |
spring.datasource.url=jdbc:mysql://localhost:3306/test_schema?useSSL=false spring.datasource.username=root spring.datasource.password=******* spring.datasource.driver-class-name=com.mysql.jdbc.Driver |
Output
Data inserted Successfully |