- Wiosenny szablon JDBC
- Zrozumienie potrzeby stosowania szablonu Spring JDBC
- Zaleta szablonu Spring JDBC
- Klasy szablonów JDBC
- Przykład klasy JdbcTemplate
Wiosna Szablon Jdbc to potężny mechanizm umożliwiający łączenie się z bazą danych i wykonywanie zapytań SQL. Wewnętrznie korzysta z interfejsu API JDBC, ale eliminuje wiele problemów związanych z interfejsem API JDBC.
Problemy API JDBC
Problemy JDBC API są następujące:
- Musimy napisać dużo kodu przed i po wykonaniu zapytania, na przykład tworząc połączenie, instrukcję, zamykając zestaw wyników, połączenie itp.
- Musimy wykonać kod obsługi wyjątków w logice bazy danych.
- Musimy zająć się transakcją.
- Powtarzanie wszystkich tych kodów z jednej logiki bazy danych do drugiej jest zadaniem czasochłonnym.
Zaleta Spring JdbcTemplate
Spring JdbcTemplate eliminuje wszystkie wyżej wymienione problemy JDBC API. Zapewnia metody bezpośredniego pisania zapytań, dzięki czemu oszczędza dużo pracy i czasu.
Zbliża się wiosna Jdbc
Framework Spring zapewnia następujące podejścia do dostępu do bazy danych JDBC:
- Szablon Jdbc
- Nazwany parametrJdbcTemplate
- Prosty szablon Jdbc
- SimpleJdbcInsert i SimpleJdbcCall
Klasa JdbcTemplate
Jest to klasa centralna w klasach obsługi Spring JDBC. Zajmuje się tworzeniem i zwalnianiem zasobów, takimi jak tworzenie i zamykanie obiektu połączenia itp. Więc nie spowoduje żadnego problemu, jeśli zapomnisz zamknąć połączenie.
Obsługuje wyjątki i dostarcza informacyjne komunikaty o wyjątkach za pomocą klas wyjątków zdefiniowanych w pliku org.springframework.dao pakiet.
Za pomocą klasy JdbcTemplate możemy wykonać wszystkie operacje na bazie danych, takie jak wstawianie, aktualizacja, usuwanie i pobieranie danych z bazy.
Przyjrzyjmy się metodom wiosennej klasy JdbcTemplate.
NIE. | metoda | Opis |
---|---|---|
1) | publiczna aktualizacja int (zapytanie łańcuchowe) | służy do wstawiania, aktualizowania i usuwania rekordów. |
2) | publiczna aktualizacja int (zapytanie o ciąg znaków, obiekt... argumenty) | służy do wstawiania, aktualizowania i usuwania rekordów za pomocą PrzygotowanejStatement przy użyciu podanych argumentów. |
3) | publiczne wykonanie void (zapytanie o ciąg znaków) | służy do wykonywania zapytań DDL. |
4) | publiczne wykonanie T (String sql, akcja „PreparedStatementCallback”) | wykonuje zapytanie przy użyciu wywołania zwrotnego „PreparedStatement”. |
5) | publiczne zapytanie T (String sql, ResultSetExtractor rse) | służy do pobierania rekordów za pomocą ResultSetExtractor. |
6) | zapytanie o listę publiczną (String sql, RowMapper rse) | służy do pobierania rekordów za pomocą RowMapper. |
Przykład Spring JdbcTemplate
Zakładamy, że utworzyłeś następującą tabelę w bazie danych Oracle10g.
create table employee( id number(10), name varchar2(100), salary number(10) );Pracownik.java
Ta klasa zawiera 3 właściwości z konstruktorami, seterami i getterami.
package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters }PracownikDao.java
Zawiera jedną właściwość jdbcTemplate i trzy metody saveEmployee(), updateEmployee i DeleteEmployee().
Instrukcja przełącznika Java
package com.javatpoint; 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); } }aplikacjaContext.xml
The Źródło danych sterownika DriverManager służy do przechowywania informacji o bazie danych, takich jak nazwa klasy sterownika, adres URL połączenia, nazwa użytkownika i hasło.
Istnieje nieruchomość o nazwie źródło danych w klasie JdbcTemplate typu DriverManagerDataSource. Musimy zatem podać odwołanie do obiektu DriverManagerDataSource w klasie JdbcTemplate dla właściwości źródła danych.
Tutaj używamy obiektu JdbcTemplate w klasie EmployeeDao, więc przekazujemy go metodą ustawiającą, ale możesz także użyć konstruktora.
Test.java
Ta klasa pobiera komponent bean z pliku applicationContext.xml i wywołuje metodę saveEmployee(). Możesz także wywołać metody updateEmployee() i DeleteEmployee() poprzez odkomentowanie kodu.
package com.javatpoint; 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);*/ } }pobierz ten przykład (opracowany przy użyciu MyEclipse IDE)
pobierz ten przykład (opracowany przy użyciu Eclipse IDE)