- Spring JDBC-mall
- Förstå behovet av Spring JDBC-mall
- Fördel med Spring JDBC-mall
- JDBC-mallklasser
- Exempel på klassen JdbcTemplate
Vår JdbcTemplate är en kraftfull mekanism för att ansluta till databasen och exekvera SQL-frågor. Den använder internt JDBC api, men eliminerar många problem med JDBC API.
Problem med JDBC API
Problemen med JDBC API är följande:
- Vi behöver skriva en hel del kod före och efter exekvering av frågan, som att skapa anslutning, uttalande, avsluta resultatuppsättning, anslutning etc.
- Vi måste utföra undantagshanteringskod på databaslogiken.
- Vi måste hantera transaktionen.
- Upprepning av alla dessa koder från en databaslogik till en annan är en tidskrävande uppgift.
Fördel med Spring JdbcTemplate
Spring JdbcTemplate eliminerar alla ovan nämnda problem med JDBC API. Det ger dig metoder för att skriva frågorna direkt, så det sparar mycket arbete och tid.
Spring Jdbc närmar sig
Spring-ramverket tillhandahåller följande metoder för JDBC-databasåtkomst:
- JdbcTemplate
- NamedParameterJdbcTemplate
- EnkelJdbcMall
- SimpleJdbcInsert och SimpleJdbcCall
JdbcTemplate-klass
Det är den centrala klassen i vårens JDBC-stödklasser. Den tar hand om skapande och frigörande av resurser såsom skapande och stängning av anslutningsobjekt etc. Så det kommer inte leda till några problem om du glömmer att stänga anslutningen.
Den hanterar undantaget och tillhandahåller informativa undantagsmeddelanden med hjälp av undantagsklasser definierade i org.springframework.dao paket.
Vi kan utföra alla databasoperationer med hjälp av JdbcTemplate-klassen såsom infogning, uppdatering, radering och hämtning av data från databasen.
Låt oss se metoderna för våren JdbcTemplate-klassen.
Nej. | Metod | Beskrivning |
---|---|---|
1) | public int update(String query) | används för att infoga, uppdatera och ta bort poster. |
2) | public int update(String query,Object... args) | används för att infoga, uppdatera och ta bort poster med PreparedStatement med givna argument. |
3) | public void exekvera (strängfråga) | används för att köra DDL-fråga. |
4) | public T execute(String sql, PreparedStatementCallback action) | exekverar frågan genom att använda PreparedStatement callback. |
5) | public T-fråga (String sql, ResultSetExtractor rse) | används för att hämta poster med ResultSetExtractor. |
6) | public List-fråga (String sql, RowMapper rse) | används för att hämta poster med RowMapper. |
Exempel på Spring JdbcTemplate
Vi antar att du har skapat följande tabell i Oracle10g-databasen.
create table employee( id number(10), name varchar2(100), salary number(10) );Employee.java
Denna klass innehåller 3 egenskaper med konstruktorer och setter och 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 innehåller en egenskap jdbcTemplate och tre metoder saveEmployee(), updateEmployee och 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
De DriverManagerDataSource används för att innehålla information om databasen såsom förarklassnamn, anslutnings-URL, användarnamn och lösenord.
Det finns en fastighet som heter datakälla i klassen JdbcTemplate av typen DriverManagerDataSource. Så vi måste tillhandahålla referensen till DriverManagerDataSource-objektet i klassen JdbcTemplate för datasource-egenskapen.
Här använder vi JdbcTemplate-objektet i EmployeeDao-klassen, så vi skickar det med sättermetoden men du kan också använda konstruktorn.
Test.java
Den här klassen hämtar bönan från filen applicationContext.xml och anropar metoden saveEmployee(). Du kan också anropa metoden updateEmployee() och deleteEmployee() genom att avkommentera koden också.
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);*/ } }ladda ner det här exemplet (utvecklat med MyEclipse IDE)
ladda ner det här exemplet (utvecklat med Eclipse IDE)