English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring JdbcTemplate É um mecanismo poderoso que pode se conectar ao banco de dados e executar consultas SQL. Ele usa internamente o JDBC API, mas elimina muitos problemas do JDBC API.
Os problemas do JDBC API são os seguintes:
Antes e após a execução da consulta, precisamos escrever muito código, por exemplo, criar conexões, comandos, fechar conjuntos de resultados, conexões, etc. Precisamos executar código de exceção no nível lógico do banco de dados. Precisamos lidar com transações. É uma tarefa耗时的, copiar todo esse código de uma lógica de banco de dados para outra lógica de banco de dados.
O Spring JdbcTemplate elimina todos os problemas do JDBC API. Ele fornece métodos para escrever consultas diretamente, economizando muita trabalho e tempo.
O framework Spring fornece os seguintes métodos para acesso ao banco de dados JDBC:
JdbcTemplate NamedParameterJdbcTemplate SimpleJdbcTemplate SimpleJdbcInsert e SimpleJdbcCall
É a classe central do suporte JDBC do Spring. Responsável por criar e liberar recursos, como criar e fechar objetos de conexão, entre outros. Portanto, se você esquecer de fechar a conexão, não causará qualquer problema.
ele lida com exceções e fornece mensagens de exceção informando org.springframework.dao com a ajuda de classes de exceções definidas no pacote.
Podemos usar a classe JdbcTemplate para executar todas as operações de banco de dados, como inserção, atualização, exclusão de dados do banco de dados e recuperação de dados.
Vamos ver os métodos da classe Spring JdbcTemplate.
Método | Descrição |
public int update(String query) | usado para inserir, atualizar e excluir registros. |
public int update(String query, Object ... args) | usado para inserir, atualizar e excluir registros usando PreparedStatement com parâmetros fornecidos. |
public void execute(String query) | usado para executar consultas DDL. |
public T execute(String sql, PreparedStatementCallback action) | executando consulta usando callback PreparedStatement. |
public T query(String sql, ResultSetExtractor rse) | usando ResultSetExtractor para obter registros. |
public List query(String sql, RowMapper rse) | usando RowMapper para obter registros. |
Suponhamos que você já tenha instalado o Oracle10a seguinte tabela foi criada no banco de dados g.
create table employee ( id número (10) name variável de caractere2(100), salary número (10) );
Employee.java
Este classe contém3um objeto com construtor, setter e getter.
package com.w3codebox; public class Employee { private int id; private String name; private float salary; //sem parâmetros e construtores parametrizados //getters e setters }
EmployeeDao.java
Ele contém um atributo jdbcTemplate e três métodos saveEmployee(), updateEmployee e 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 usado para conter informações sobre o banco de dados, como o nome da classe do driver, URL de conexão, nome de usuário e senha.
Na classe JdbcTemplate do tipo DriverManagerDataSource há um método chamado datasource das propriedades. Portanto, precisamos fornecer uma referência ao objeto DriverManagerDataSource na classe JdbcTemplate para o atributo de fonte de dados.
Aqui, usamos o objeto JdbcTemplate na classe EmployeeDao, portanto, passamos por meio do método setter, mas você também pode usar o construtor.
<?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="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
Esta classe obtém o Bean do arquivo applicationContext.xml e chama o método saveEmployee(). Você também pode descomentar o código para chamar os métodos updateEmployee() e deleteEmployee().
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);*/ } }