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

Spring JdbcTemplate Anleitung

Spring JdbcTemplate Es ist ein leistungsstarkes Mechanismus, der eine Verbindung zu einer Datenbank herstellen und SQL-Abfragen ausführen kann. Es verwendet intern die JDBC-API, aber löst viele Probleme der JDBC-API.

Die Probleme der JDBC-API

Die Probleme der JDBC-API sind wie folgt:

Vor und nach dem Ausführen der Abfrage müssen wir viel Code schreiben, z.B. die Erstellung von Verbindungen, Anweisungen, das Schließen von Result-Sätzen, Verbindungen usw. Wir müssen das Ausführen von Ausnahmebehandlungscode in der Datenbanklogik durchführen. Wir müssen Transaktionen behandeln. Das Klonen aller diesem Code von einer Datenbanklogik auf eine andere Datenbanklogik ist eine zeitaufwendige Aufgabe.

Vorteile von Spring JdbcTemplate

Spring JdbcTemplate löst alle Probleme der oben genannten JDBC-API. Es bietet direkte Methoden zum Schreiben von Abfragen, was eine erhebliche Zeitersparnis bedeutet.

Spring Jdbc Methoden

Der Spring-Framework bietet folgende Methoden für den Zugriff auf JDBC-Datenbanken:

JdbcTemplate NamedParameterJdbcTemplate SimpleJdbcTemplate SimpleJdbcInsert und SimpleJdbcCall

JdbcTemplate-Klasse

Es ist die zentrale Klasse der Spring JDBC-Support-Klassen. Sie ist verantwortlich für die Erstellung und Freigabe von Ressourcen, wie z.B. die Erstellung und Schließung von Verbindungsobjekten. Daher führt das Vergessen, die Verbindung zu schließen, nicht zu irgendeinem Problem.

Es behandelt Ausnahmen und bietet Ausnahme-Nachrichten durch org.springframework.dao von in der Bibliothek definierten Ausnahme-Klassen unterstützt.

Wir können mit der JdbcTemplate-Klasse alle Datenbankoperationen ausführen, z.B. Einfügen, Aktualisieren, Daten aus der Datenbank löschen und Daten abrufen.

Lassen Sie uns die Methoden der Spring JdbcTemplate-Klasse betrachten.

MethodeBeschreibung
public int update(String query)verwendet, um Daten einzufügen, aktualisieren und löschen.
public int update(String query, Object ... args)verwendet, um Daten durch die Verwendung von gegebenen Parameters in PreparedStatement einzufügen, aktualisieren und löschen.
public void execute(String query)verwendet um DDL-Abfragen auszuführen.
public T execute(String sql, PreparedStatementCallback action)durch die Verwendung von PreparedStatementCallback die Abfrage auszuführen.
public T query(String sql, ResultSetExtractor rse)verwendet um Daten zu ermitteln, indem ResultSetExtractor verwendet wird.
public List query(String sql, RowMapper rse)verwendet um Daten zu ermitteln, indem RowMapper verwendet wird.

Beispiel für Spring JdbcTemplate

Wir gehen davon aus, dass Sie bereits in Oracle10wurde im Datenbank g erstellt.

create table employee(
id number(10)
name varchar2(100),
salary number(10)
);

Employee.java

Dieses Klasse enthält3eine mit Konstruktor, Setter und Getter ausgestattet.

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

EmployeeDao.java

Es enthält eine Eigenschaft jdbcTemplate und drei Methoden saveEmployee(), updateEmployee und deleteEmployee().

package com.w3codebox;
import org.springframework.jdbc.core.JdbcTemplate;
public class EmployeeDao {
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
      this.jdbcTemplate = jdbcTemplate;
    }
    public int saveEmployee(Employee e){
      String query="insert into employee values('"+e.getId()+"','"+e.getName()+"','"+e.getSalary()+"');"
      return jdbcTemplate.update(query);
    }
    public int updateEmployee(Employee e){
      String query="update employee set 
      name='"+e.getName()+"',salary='"+e.getSalary()+"' where id='"+e.getId()+"' ";
      return jdbcTemplate.update(query);
    }
    public int deleteEmployee(Employee e){
      String query="delete from employee where id='"+e.getId()+"' ";
      return jdbcTemplate.update(query);
    }
}

applicationContext.xml

DriverManagerDataSource um Informationen über die Datenbank zu enthalten, wie z.B. den Namen der Treiberklasse, die Verbindung URL, den Benutzernamen und das Passwort.

In der JdbcTemplate-Klasse vom Typ DriverManagerDataSource gibt es eine Methode namens datasource Eigenschaft. Daher müssen wir im JdbcTemplate-Klasse einen Verweis auf das DriverManagerDataSource-Objekt für die Datenquell-Eigenschaft 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

Diese Klasse holt das Bean aus der Datei applicationContext.xml und ruft die Methode saveEmployee() auf. Sie können auch die Methoden updateEmployee() und deleteEmployee() aufrufen, indem Sie die Kommentare in den Code entfernen.

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");
  int status = dao.saveEmployee(new Employee(102,"Amit",35000));
  System.out.println(status);
    
  /*int status = dao.updateEmployee(new Employee(102,"Sonoo",15000));
  System.out.println(status);
  */
    
  /*Employee e = new Employee();
  e.setId(102);
  int status = dao.deleteEmployee(e);
  System.out.println(status);*/
  
}
}