- Plantilla JDBC de primavera
- Comprendre la necessitat de Spring JDBC Template
- Avantatge de la plantilla Spring JDBC
- Classes de plantilles JDBC
- Exemple de classe JdbcTemplate
Primavera JdbcTemplate és un mecanisme potent per connectar-se a la base de dades i executar consultes SQL. Utilitza internament l'API JDBC, però elimina molts problemes de l'API JDBC.
Problemes de l'API JDBC
Els problemes de l'API JDBC són els següents:
- Hem d'escriure molt de codi abans i després d'executar la consulta, com ara crear connexió, declaració, tancar el conjunt de resultats, connexió, etc.
- Hem de realitzar el codi de gestió d'excepcions a la lògica de la base de dades.
- Hem de gestionar la transacció.
- La repetició de tots aquests codis d'una a una altra lògica de base de dades és una tasca que requereix molt de temps.
Avantatge de Spring JdbcTemplate
Spring JdbcTemplate elimina tots els problemes esmentats anteriorment de l'API JDBC. Us proporciona mètodes per escriure les consultes directament, de manera que estalvia molt de treball i temps.
Enfocaments de primavera Jdbc
Spring framework proporciona els enfocaments següents per a l'accés a la base de dades JDBC:
- JdbcTemplate
- NamedParameterJdbcTemplate
- SimpleJdbcTemplate
- SimpleJdbcInsert i SimpleJdbcCall
Classe JdbcTemplate
És la classe central de les classes de suport JDBC de Spring. S'ocupa de la creació i l'alliberament de recursos, com ara la creació i el tancament de l'objecte de connexió, etc. Per tant, no generarà cap problema si oblideu tancar la connexió.
Gestiona l'excepció i proporciona els missatges d'excepció informatius amb l'ajuda de les classes d'excepció definides a l' org.springframework.dao paquet.
Podem realitzar totes les operacions de la base de dades amb l'ajuda de la classe JdbcTemplate com ara la inserció, l'actualització, la supressió i la recuperació de les dades de la base de dades.
Vegem els mètodes de la classe Spring JdbcTemplate.
No. | Mètode | Descripció |
---|---|---|
1) | public int update (consulta de cadena) | s'utilitza per inserir, actualitzar i eliminar registres. |
2) | public int update (consulta de cadena, objecte... args) | s'utilitza per inserir, actualitzar i eliminar registres mitjançant PreparedStatement utilitzant arguments donats. |
3) | public void execute (consulta de cadena) | s'utilitza per executar consultes DDL. |
4) | public T execute (String sql, acció PreparedStatementCallback) | executa la consulta mitjançant la devolució de trucada PreparedStatement. |
5) | consulta T pública (String sql, ResultSetExtractor rse) | s'utilitza per obtenir registres mitjançant ResultSetExtractor. |
6) | consulta de llista pública (String sql, RowMapper rse) | s'utilitza per obtenir registres mitjançant RowMapper. |
Exemple de Spring JdbcTemplate
Suposem que heu creat la taula següent dins de la base de dades Oracle10g.
create table employee( id number(10), name varchar2(100), salary number(10) );Employee.java
Aquesta classe conté 3 propietats amb constructors i setter i getters.
package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters }EmployeeDao.java
Conté una propietat jdbcTemplate i tres mètodes saveEmployee(), updateEmployee i deleteEmployee().
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); } }applicationContext.xml
El DriverManagerDataSource s'utilitza per contenir la informació sobre la base de dades, com ara el nom de la classe del controlador, l'URL de connexió, el nom d'usuari i la contrasenya.
Hi ha una propietat anomenada Font de dades a la classe JdbcTemplate del tipus DriverManagerDataSource. Per tant, hem de proporcionar la referència de l'objecte DriverManagerDataSource a la classe JdbcTemplate per a la propietat de la font de dades.
Aquí, estem utilitzant l'objecte JdbcTemplate a la classe EmployeeDao, de manera que l'estem passant pel mètode setter, però també podeu utilitzar el constructor.
Test.java
Aquesta classe obté el bean del fitxer applicationContext.xml i crida al mètode saveEmployee(). També podeu trucar al mètode updateEmployee() i deleteEmployee() eliminant el comentari del codi també.
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);*/ } }descarregueu aquest exemple (desenvolupat amb MyEclipse IDE)
descarregueu aquest exemple (desenvolupat amb Eclipse IDE)