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

Beispiel für Spring NamedParameterJdbcTemplate

Spring bietet eine andere Methode zum Einfügen von Daten über benannte Parameter an. Auf diese Weise verwenden wir Namen anstelle von ? (Fragezeichen). Daher ist es am besten, sich an die Daten der Spalte zu erinnern.

Einfaches Beispiel für eine benannte Parameterabfrage

insert into employee values (:id,:name,:salary)

Methoden der Klasse NamedParameterJdbcTemplate

In diesem Beispiel rufen wir nur die Methode execute der Klasse NamedParameterJdbcTemplate auf. Die Syntax der Methode ist wie folgt:

public T execute(String sql, Map map, PreparedStatementCallback psc)

Ein Beispiel für die Klasse NamedParameterJdbcTemplate

Wir gehen davon aus, dass Sie bereits in Oracle10Die Tabelle wurde im g-Datenbank erstellt.

Erstellen Sie die Tabelle employee(
ID Zahl(10)
Name varchar2(100),
Gehalt Zahl(10)
);

Employee.java

Diese Klasse enthält3eine mit Konstruktor, Setter und Getter bestückte 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 das Attribut jdbcTemplate und eine Methode speichern.

package com.w3codebox;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import java.util.*;
public class EmpDao {
NamedParameterJdbcTemplate template;
public EmpDao(NamedParameterJdbcTemplate template) {
        this.template = template;
}
public  void save (Emp e){
String query="insert into employee values (:id,:name,:salary)";
Map<String,Object> map=new HashMap<String,Object>();
map.put("id",e.getId());
map.put("name",e.getName());
map.put("salary",e.getSalary());
template.execute(query,map,new PreparedStatementCallback() {
    @Override
    public Object doInPreparedStatement(PreparedStatement ps)
            throws SQLException, DataAccessException {
        return ps.executeUpdate();
    }
});
}
}

applicationContext.xml

DriverManagerDataSource der Informationen über die Datenbank enthält, z.B. den Namen der Treiberklasse, die URL der Verbindung, den Benutzernamen und das Passwort.

In der Klasse NamedParameterJdbcTemplate vom Typ DriverManagerDataSource gibt es einen Namens datasource Die Eigenschaft. Daher müssen wir in der Klasse NamedParameterJdbcTemplate den Verweis auf das DriverManagerDataSource-Objekt für die Datenquelleneigenschaft bereitstellen.

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

<?xml version="1.0" encoding="UTF-8"-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="jtemplate" 
 class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="ds"></constructor-arg>
</bean>
<bean id="edao" class="com.w3codebox.EmpDao">
<constructor-arg>
<ref bean="jtemplate"/>
</constructor-arg>
</bean>
</beans>

SimpleTest.java

Dieser Code holt sich das Bean aus der Datei applicationContext.xml und ruft die save-Methode auf.

package com.w3codebox;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class SimpleTest {
  public static void main(String[] args) {
    Resource r=new ClassPathResource("applicationContext.xml");
    BeanFactory factory=new XmlBeanFactory(r);
    EmpDao dao=(EmpDao)factory.getBean("edao");
    dao.save(new Emp(23,"sonoo",50000));
  }
}