English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Beispiel für PreparedStatement in Spring JdbcTemplate

mit der Klasse execute()Methode, mit der wir parameterisierte Abfragen mit Spring JdbcTemplate ausführen können. Um parameterisierte Abfragen zu verwenden, übergeben wir PreparedStatementCallback des Beispiels.

Die Syntax der execute-Methode zur Verwendung von parameterisierten Abfragen

public T execute(String sql,PreparedStatementCallback<T>);

PreparedStatementCallback-Interface

Es behandelt Eingangsparameter und Ausgabeergebnisse. In diesem Fall müssen Sie sich keine Sorgen um Anführungszeichen machen.

Methode des PreparedStatementCallback-Interfaces

Es hat nur eine Methode doInPreparedStatement. Die Syntax der Methode ist wie folgt:

public T doInPreparedStatement(PreparedStatement ps)throws SQLException, DataAccessException

Beispiel für die Verwendung von PreparedStatement in Spring

Wir gehen davon aus, dass Sie bereits Oracle10wurde in der Datenbank Tabelle erstellt.

create table employee(
ID Nummer(10)
Name varchar2(100),
Gehalt Nummer(10)
);

Employee.java

Dieses Klasse enthält3eine mit Konstruktoren, Settern und Gettern versehene Eigenschaft.

package com.w3codebox;
public class Employee {
private int id;
private String name;
private float salary;
//nein-Argument und parameterisierte Konstruktoren
//Getter und Setter
}

EmployeeDao.java

Es enthält eine Eigenschaft jdbcTemplate und eine Methode saveEmployeeByPreparedStatement. Man muss das Konzept der anonymen Klassen verstehen, um den Code der Methode zu verstehen.

package com.w3codebox;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCallback;
public class EmployeeDao {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
}
public boolean saveEmployeeByPreparedStatement(final Employee e){
    String query="insert into employee values(?,?,?)";
    return jdbcTemplate.execute(query,new PreparedStatementCallback<Boolean>(){
    @Override
    public boolean doInPreparedStatement(PreparedStatement ps)
            throws SQLException, DataAccessException {
        ps.setInt(1,e.getId());
        ps.setString(2,e.getName());
        ps.setfloat(3,e.getSalary());
        return ps.execute();
    }
    );
}
}

applicationContext.xml

DriverManagerDataSource Es wird verwendet, um Informationen über die Datenbank zu enthalten, wie z.B. der Name der Treiberklasse, die Verbindung URL, Benutzername und Passwort.

In der JdbcTemplate-Klasse vom Typ DriverManagerDataSource gibt es ein Namensfeld }} datasource Eigenschaften. Daher müssen wir in der Klasse JdbcTemplate eine Referenz auf das DriverManagerDataSource-Objekt für das Datenquellenattribut bereitstellen.

Hier verwenden wir das JdbcTemplate-Objekt in der Klasse EmployeeDao, daher übergeben wir es über die Setter-Methode, aber Sie können auch den Konstruktor verwenden.

<?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:p="http://www.springframework.org/schema/p
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="system" />
<property name="password" value="oracle" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds"></property>
</bean>
<bean id="edao" class="com.w3codebox.EmployeeDao">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
</beans>

Test.java

Dieses Objekt ruft das Bean aus der Datei applicationContext.xml ab und ruft die Methode saveEmployeeByPreparedStatement() auf.

package com.w3codebox;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
    ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
    EmployeeDao dao=(EmployeeDao)ctx.getBean("edao");
    dao.saveEmployeeByPreparedStatement(new Employee(108,"Amit",35000));
}
}