logo

Tutorial Spring JdbcTemplate

  1. Modelo Spring JDBC
  2. Compreendendo a necessidade do modelo Spring JDBC
  3. Vantagem do modelo Spring JDBC
  4. Classes de modelo JDBC
  5. Exemplo de classe JdbcTemplate

Primavera Modelo Jdbc é um mecanismo poderoso para conectar-se ao banco de dados e executar consultas SQL. Ele usa API JDBC internamente, mas elimina muitos problemas da API JDBC.

Problemas da API JDBC

Os problemas da API JDBC são os seguintes:

  • Precisamos escrever muito código antes e depois de executar a consulta, como criar conexão, instrução, fechar conjunto de resultados, conexão etc.
  • Precisamos executar o código de tratamento de exceções na lógica do banco de dados.
  • Precisamos lidar com a transação.
  • A repetição de todos esses códigos de uma lógica de banco de dados para outra é uma tarefa demorada.

Vantagem do Spring JdbcTemplate

Spring JdbcTemplate elimina todos os problemas mencionados acima da API JDBC. Ele fornece métodos para escrever as consultas diretamente, economizando muito trabalho e tempo.


Abordagens Spring Jdbc

A estrutura Spring fornece as seguintes abordagens para acesso ao banco de dados JDBC:

  • Modelo Jdbc
  • NamedParameterJdbcTemplate
  • Modelo SimpleJdbc
  • SimpleJdbcInsert e SimpleJdbcCall

Classe JdbcTemplate

É a classe central nas classes de suporte Spring JDBC. Ele cuida da criação e liberação de recursos como criação e fechamento de objeto de conexão etc. Portanto, não causará nenhum problema se você esquecer de fechar a conexão.

Ele trata a exceção e fornece mensagens informativas de exceção com a ajuda de classes de exceção definidas no org.springframework.dao pacote.

Podemos realizar todas as operações do banco de dados com a ajuda da classe JdbcTemplate, como inserção, atualização, exclusão e recuperação dos dados do banco de dados.

Vamos ver os métodos da classe Spring JdbcTemplate.

Não.MétodoDescrição
1)atualização int pública (consulta de string)é usado para inserir, atualizar e excluir registros.
2)atualização int pública (consulta de string, objeto... args)é usado para inserir, atualizar e excluir registros usando PreparedStatement usando determinados argumentos.
3)execução pública void (consulta de string)é usado para executar a consulta DDL.
4)public T execute (String sql, ação PreparedStatementCallback)executa a consulta usando o retorno de chamada PreparedStatement.
5)consulta T pública (String sql, ResultSetExtractor rse)é usado para buscar registros usando ResultSetExtractor.
6)consulta de lista pública (String sql, RowMapper rse)é usado para buscar registros usando RowMapper.

Exemplo de Spring JdbcTemplate

Presumimos que você criou a tabela a seguir dentro do banco de dados Oracle10g.

 create table employee( id number(10), name varchar2(100), salary number(10) ); 
Funcionário.java

Esta classe contém 3 propriedades com construtores e setter e getters.

 package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters } 
FuncionárioDao.java

Ele contém uma propriedade jdbcTemplate e três métodos saveEmployee(), updateEmployee e 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); } } 
aplicaçãoContext.xml

O DriverManagerDataSource é usado para conter informações sobre o banco de dados, como nome da classe do driver, URL de conexão, nome de usuário e senha.

Há uma propriedade chamada fonte de dados na classe JdbcTemplate do tipo DriverManagerDataSource. Portanto, precisamos fornecer a referência do objeto DriverManagerDataSource na classe JdbcTemplate para a propriedade datasource.

Aqui, estamos usando o objeto JdbcTemplate na classe EmployeeDao, então estamos passando-o pelo método setter, mas você também pode usar o construtor.

 
Teste.java

Esta classe obtém o bean do arquivo applicationContext.xml e chama o método saveEmployee(). Você também pode chamar os métodos updateEmployee() e deleteEmployee() descomentando o código também.

 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);*/ } } 
baixe este exemplo (desenvolvido usando MyEclipse IDE)
baixe este exemplo (desenvolvido usando Eclipse IDE)