logo

Spring JdbcTemplate Tutorial

  1. Spring JDBC skabelon
  2. Forstå behovet for Spring JDBC-skabelon
  3. Fordel ved Spring JDBC-skabelon
  4. JDBC skabelon klasser
  5. Eksempel på JdbcTemplate-klassen

Forår JdbcTemplate er en kraftfuld mekanisme til at oprette forbindelse til databasen og udføre SQL-forespørgsler. Det bruger internt JDBC api, men eliminerer en masse problemer med JDBC API.

int til streng i java

Problemer med JDBC API

Problemerne med JDBC API er som følger:

  • Vi skal skrive en masse kode før og efter eksekvering af forespørgslen, såsom oprettelse af forbindelse, sætning, lukning af resultatsæt, forbindelse osv.
  • Vi skal udføre undtagelseshåndteringskode på databaselogikken.
  • Vi skal håndtere transaktionen.
  • Gentagelse af alle disse koder fra den ene til den anden databaselogik er en tidskrævende opgave.

Fordel ved Spring JdbcTemplate

Spring JdbcTemplate eliminerer alle de ovennævnte problemer med JDBC API. Det giver dig metoder til at skrive forespørgslerne direkte, så det sparer meget arbejde og tid.


Spring Jdbc-tilgange

Spring framework giver følgende tilgange til JDBC-databaseadgang:

  • JdbcTemplate
  • NavnetParameterJdbcTemplate
  • EnkelJdbcSkabelon
  • SimpleJdbcInsert og SimpleJdbcCall

JdbcTemplate klasse

Det er den centrale klasse i Spring JDBC support klasserne. Den tager sig af oprettelse og frigivelse af ressourcer såsom oprettelse og lukning af forbindelsesobjekt osv. Så det vil ikke føre til noget problem, hvis du glemmer at lukke forbindelsen.

Den håndterer undtagelsen og giver de informative undtagelsesmeddelelser ved hjælp af undtagelsesklasser defineret i org.springframework.dao pakke.

Vi kan udføre alle databaseoperationer ved hjælp af JdbcTemplate-klassen, såsom indsættelse, opdatering, sletning og hentning af data fra databasen.

Lad os se metoderne til foråret JdbcTemplate-klassen.

sanjay dutt og
Ingen.MetodeBeskrivelse
1)offentlig int-opdatering (strengforespørgsel)bruges til at indsætte, opdatere og slette poster.
2)public int update(String query,Object... args)bruges til at indsætte, opdatere og slette poster ved hjælp af PreparedStatement ved hjælp af givne argumenter.
3)public void eksekver (strengforespørgsel)bruges til at udføre DDL-forespørgsel.
4)public T execute(String sql, PreparedStatementCallback action)udfører forespørgslen ved at bruge PreparedStatement-tilbagekald.
5)offentlig T-forespørgsel (String sql, ResultSetExtractor rse)bruges til at hente poster ved hjælp af ResultSetExtractor.
6)offentlig listeforespørgsel (String sql, RowMapper rse)bruges til at hente poster ved hjælp af RowMapper.

Eksempel på Spring JdbcTemplate

Vi antager, at du har oprettet følgende tabel inde i Oracle10g-databasen.

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

Denne klasse indeholder 3 egenskaber med konstruktører og setter og 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

Den indeholder en egenskab jdbcTemplate og tre metoder saveEmployee(), updateEmployee og 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

Det DriverManagerDataSource bruges til at indeholde oplysninger om databasen, såsom driverklassenavn, forbindelses-URL, brugernavn og adgangskode.

Der er en ejendom navngivet datakilde i klassen JdbcTemplate af typen DriverManagerDataSource. Så vi skal angive referencen til DriverManagerDataSource-objektet i JdbcTemplate-klassen for datakildeegenskaben.

Her bruger vi JdbcTemplate-objektet i EmployeeDao-klassen, så vi videregiver det med setter-metoden, men du kan også bruge constructor.

 
Test.java

Denne klasse henter bønnen fra filen applicationContext.xml og kalder saveEmployee()-metoden. Du kan også kalde updateEmployee() og deleteEmployee()-metoden ved også at fjerne kommentering af koden.

 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);*/ } } 
download dette eksempel (udviklet ved hjælp af MyEclipse IDE)
download dette eksempel (udviklet ved hjælp af Eclipse IDE)